Directory.EnumerateFiles与Directory.GetFiles有什么区别?
Directory.EnumerateFiles
和GetFiles
什么区别?
显然一个返回一个数组,另一个返回Enumerable。
还要别的吗?
从文档 :
EnumerateFiles和GetFiles方法不同,如下所示:当您使用EnumerateFiles时,您可以开始枚举集合的名称在整个集合返回之前; 当您使用GetFiles时,您必须等待返回的整个数组名称才能访问数组。 因此,当您使用许多文件和目录时,EnumerateFiles可以更高效。
所以基本上, EnumerateFiles
返回一个IEnumerable
,可以稍微延迟评估一下,而GetFiles
返回一个string[]
,它必须在返回之前完全填充。
EnumerateFiles
返回IEnumerable<string>
,这意味着延迟执行。 它只能在Fx4以上。
当使用EnumerateFiles时,如果您正在使用.Last
,则所有速度都会丢失。 这当然是有道理的,因为要到达最后一个文件,它需要枚举所有文件,然后抓取最后一个文件。
但是,使用.First
或.FirstOrDefault
变得非常快,因为它只是抓取第一个项目并继续.FirstOrDefault
。