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);