Directory.EnumerateFiles 和 Directory.getFiles 之间的区别是什么?

Directory.EnumerateFilesGetFiles的区别是什么?

显然,一个返回数组,另一个返回 Enumable。

还有别的事吗?

60080 次浏览

来自 那些文件:

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

因此,基本上,EnumerateFiles返回一个 IEnumerable,它可以在某种程度上进行延迟计算,而 GetFiles返回一个 string[],它在返回之前必须完全填充。

EnumerateFiles返回 IEnumerable<string>,这意味着延迟执行。

由于 File 系统是出了名的慢(特别是对于大文件夹) ,延迟执行对于顺序处理来说是一个真正的好处。取决于很多其他因素。

当使用 EnumerateFiles 时,如果使用 .Last,则会失去所有速度。这当然有意义,因为要获取最后一个文件,它需要枚举所有文件,然后获取最后一个文件。

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