Answers:
从文档:
EnumerateFiles和GetFiles方法的区别如下:使用EnumerateFiles时,可以在开始返回整个集合之前开始枚举名称集合;否则,您可以开始枚举名称集合。使用GetFiles时,必须等待返回整个名称数组,然后才能访问该数组。因此,当您处理许多文件和目录时,EnumerateFiles可能会更有效。
因此,基本上,EnumerateFiles
返回值a IEnumerable
可以稍作延迟评估,而GetFiles
返回值a string[]
必须先完全填充后才能返回。
FileSystemEnumerableFactory.CreateFileInfoIterator()
。但是EnumerateFiles()
直接返回此迭代器,同时从中GetFiles()
构造其他List
内容并调用ToArray()
。因此,如果您关心速度,则可以自己使用EnumerateFiles()
和处理迭代器。
EnumerateFiles
返回IEnumerable<string>
,这意味着推迟执行。仅在Fx4及更高版本中可用。
使用EnumerateFiles时,如果再使用,则所有速度都会丢失.Last
。这当然是有道理的,因为要获取最后一个文件,将需要枚举所有文件,然后获取最后一个文件。
但是,使用.First
或.FirstOrDefault
变得非常快,因为它只是抓住了第一项并继续前进。
Array
vs Enumerable
方面还有什么区别。您的答案适用于所有此类情况,但不能回答所提出的问题。