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

Directory.EnumerateFilesGetFiles什么区别?

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

还要别的吗?

从文档 :

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

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

EnumerateFiles返回IEnumerable<string> ,这意味着延迟执行。 它只能在Fx4以上。

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

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