Directory.EnumerateFiles
与GetFiles
之间的区别是什么?
显然,一个返回一个数组,另一个返回Enumerable。
还有别的吗?
答案 0 :(得分:143)
来自the docs:
EnumerateFiles和GetFiles方法的不同之处如下:使用EnumerateFiles时,可以在返回整个集合之前开始枚举名称集合;当您使用GetFiles时,您必须等待返回整个名称数组,然后才能访问该数组。因此,当您使用许多文件和目录时,EnumerateFiles可以更有效。
基本上,EnumerateFiles
会返回一个IEnumerable
,可以稍微进行延迟评估,而GetFiles
会返回一个string[]
,它必须在返回之前完全填充。< / p>
答案 1 :(得分:29)
EnumerateFiles
返回IEnumerable<string>
,这意味着延迟执行。它仅适用于Fx4及以上版本。
答案 2 :(得分:15)
使用EnumerateFiles时,如果您使用.Last
,则所有速度都会丢失。这当然有道理,因为要到达最后一个文件,它需要枚举所有文件,然后抓住最后一个文件。
然而,使用.First
或.FirstOrDefault
变得非常快,因为它只是抓住第一个项目并继续前进。