IT-Swarm.Net

Directory.EnumerateFiles与Directory.GetFiles有什么区别?

Directory.EnumerateFilesGetFiles有什么区别?

显然,一个返回一个数组,另一个返回Enumerable。.

还要别的吗?

120
DarthVader

来自 文档

EnumerateFiles和GetFiles方法的不同之处如下:当您使用EnumerateFiles时,您可以在返回整个集合之前开始枚举名称集合;当您使用GetFiles时,您必须等待返回整个名称数组,然后才能访问该数组。因此,当您使用许多文件和目录时,EnumerateFiles可以更高效。.

所以基本上,EnumerateFiles返回一个IEnumerable,它可以稍微延迟评估,而GetFiles返回一个string[],它必须在它返回之前完全填充。.

142
Daniel DiPaolo

快速,可靠且价格合理的云托管

注册并在30天内获得$50奖金!

EnumerateFiles返回IEnumerable<string>,这意味着延迟执行。它仅适用于Fx4及以上版本。.

29
Henk Holterman

使用EnumerateFiles时,如果您使用.Last,则所有速度都会丢失。这当然是有道理的,因为要到达最后一个文件,它需要枚举所有文件,然后抓住最后一个文件。.

但是,使用.First.FirstOrDefault变得非常快,因为它只是抓取第一个项目并继续前进。.

15
Skotte