C# 目录信息枚举

C# 目录信息枚举,c#,enumeration,directoryinfo,C#,Enumeration,Directoryinfo,在学习C#basics的过程中,我了解到foreach可以处理那些实现了IEnumerable接口的集合。到目前为止还不错,但今天当我遇到DirectoryInfo时,我感到困惑 如果DirectoryInfo没有实现IEnumerable,那么foreach是如何工作的呢 DirectoryInfo[] dirListing = new DirectoryInfo(@"F:\eBook").GetDirectories(); foreach (DirectoryInfo dir in dir

在学习C#basics的过程中,我了解到foreach可以处理那些实现了
IEnumerable
接口的集合。到目前为止还不错,但今天当我遇到
DirectoryInfo
时,我感到困惑

如果
DirectoryInfo
没有实现
IEnumerable
,那么
foreach
是如何工作的呢

DirectoryInfo[] dirListing = new DirectoryInfo(@"F:\eBook").GetDirectories();

foreach (DirectoryInfo dir in dirListing)
{
    Console.WriteLine(dir.Name);
}
请告诉我……

您正在使用阵列

所有数组都派生自实现
IEnumerable
的抽象类

从MSDN开始:

数组类型是从抽象基类型
Array
派生的引用类型。由于此类型实现了
IEnumerable
IEnumerable
,因此可以对C#中的所有数组使用foreach迭代

该方法返回一个对象数组。由于所有数组都“实现”IEnumerable,因此可以对它们进行foreach


然而,需要注意的一点是,由于它返回一个数组,因此它必须在被调用时立即获取整个列表。虽然这适用于小目录,但对于大目录或使用with SearchOption.AllDirectories的情况,它并不适用。如果您使用的是.NET4+,那么您可以也应该使用或其重载之一。这些结果相同,但列表在需要时才会创建。

非常感谢您的帮助….我还没有考虑过上述情况下的数组….非常感谢您….由于需要,我不得不创建DirectoryInfo.EnumerateFiles(…)的替代品。您可以在以下位置找到我的代码: