我有一种奇怪的行为,不知道从哪里开始。我正在尝试从目录中读取文件名并将其添加到类型<string>
的通用列表中。
string path = @"C:\mydir\";
foreach (string s in Directory.GetFiles(path, "*.bak").Select(System.IO.Path.GetFileName))
{
GenericList1.Add(s);
}
我收到错误:
对象引用未设置为对象的实例。
当我调试时,我看到变量s
显示文件名作为值。事实上,我可以在使用时看到值:
foreach (string s in Directory.GetFiles(path, "*.bak").Select(System.IO.Path.GetFileName))
{
System.Windows.Forms.MessageBox.Show(s);
}
任何人都有任何洞察我可能会在这里出错?
答案 0 :(得分:0)
foreach (string s in Directory.GetFiles(path, "*.bak").Select(p => Path.GetFileName(p)))
{
GenericList1.Add(s);
}
Select
方法需要在每个对象上执行一个函数。最简单的方法是使用简单的lambda。
使用lambda时,您基本上是在创建匿名方法或函数。 Select
方法需要知道要对集合的每个项目执行哪些功能或操作。在这种情况下,您希望获取GetFiles
方法返回的集合中每个项目的文件名。如果您想要更多解释,请告诉我。