DirectoryCatalog.LoadedFiles 一行 foreach 不起作用
DirectoryCatalog.LoadedFiles one line foreach not working
我目前正在尝试使用一行 foreach 将所有加载的文件从 DirectoryCatalog 输出到控制台
代码:
DirectoryCatalog catalog = new DirectoryCatalog(".");
Array.ForEach(catalog.LoadedFiles, x => Console.WriteLine(x));
这将给出以下错误:
The type arguments for method cannot be inferred from the usage. Try
specifying the type arguments explicitly.
我尝试了类似的方法(使用显式转换指定类型参数):
Array.ForEach((ReadOnlyCollection<string>)catalog.LoadedFiles, x => Console.WriteLine(x));
还是不行
注:
此代码正常工作:
foreach (var loadedFile in catalog.LoadedFiles)
{
Console.WriteLine(loadedFile);
}
有什么想法吗?
DirectoryCatalog.LoadedFiles
属性 return 一个 ReadOnlyCollection
文件,这不是隐式数组。这里,ForEach<T>
方法需要一个元素类型为 T
的数组(单维)。在这种情况下,您首先需要将 ReadOnlyCollection
转换为数组才能访问它。您可以在 ReadOnlyCollection
上使用 ToArray()
扩展方法先将其转换为数组,然后再申请 ForEach<T>
.
var files= DirectoryCatalog.LoadedFiles.ToArray();
或者,您可以在 ReadOnlyCollection
上使用 CopyTo
方法
string[] files= new string[theObject.TheProperty.Count];
DirectoryCatalog.LoadedFiles.CopyTo(files, 0);
我目前正在尝试使用一行 foreach 将所有加载的文件从 DirectoryCatalog 输出到控制台
代码:
DirectoryCatalog catalog = new DirectoryCatalog(".");
Array.ForEach(catalog.LoadedFiles, x => Console.WriteLine(x));
这将给出以下错误:
The type arguments for method cannot be inferred from the usage. Try specifying the type arguments explicitly.
我尝试了类似的方法(使用显式转换指定类型参数):
Array.ForEach((ReadOnlyCollection<string>)catalog.LoadedFiles, x => Console.WriteLine(x));
还是不行
注:
此代码正常工作:
foreach (var loadedFile in catalog.LoadedFiles)
{
Console.WriteLine(loadedFile);
}
有什么想法吗?
DirectoryCatalog.LoadedFiles
属性 return 一个 ReadOnlyCollection
文件,这不是隐式数组。这里,ForEach<T>
方法需要一个元素类型为 T
的数组(单维)。在这种情况下,您首先需要将 ReadOnlyCollection
转换为数组才能访问它。您可以在 ReadOnlyCollection
上使用 ToArray()
扩展方法先将其转换为数组,然后再申请 ForEach<T>
.
var files= DirectoryCatalog.LoadedFiles.ToArray();
或者,您可以在 ReadOnlyCollection
上使用CopyTo
方法
string[] files= new string[theObject.TheProperty.Count];
DirectoryCatalog.LoadedFiles.CopyTo(files, 0);