我目前正在尝试使用一行foreach将所有DirectoryCatalog的加载文件输出到控制台
代码:
DirectoryCatalog catalog = new DirectoryCatalog(".");
Array.ForEach(catalog.LoadedFiles, x => Console.WriteLine(x));
将出现以下错误:
无法从用法中推断出方法的类型参数。尝试明确指定类型参数。
我尝试类似的事情(使用显式转换指定类型参数):
Array.ForEach((ReadOnlyCollection<string>)catalog.LoadedFiles, x => Console.WriteLine(x));
它仍然不起作用
注意:
此代码正常工作:
foreach (var loadedFile in catalog.LoadedFiles)
{
Console.WriteLine(loadedFile);
}
有什么想法吗?
DirectoryCatalog.LoadedFiles
属性返回文件的ReadOnlyCollection
,它不是隐式数组。在此,ForEach<T>
方法需要一个具有T类型元素的数组(单维)。在这种情况下,您首先需要在将其读取之前将ReadOnlyCollection转换为数组。您可以在ReadOnlyCollection上执行扩展方法,先将其转换为数组,然后再申请ForEach<T>
var files= DirectoryCatalog.LoadedFiles.ToArray();
或者,您可以在ReadOnlyCollection上使用CopyTo
方法>
string[] files= new string[theObject.TheProperty.Count];
DirectoryCatalog.LoadedFiles.CopyTo(files, 0);