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

发布于 2024-11-01 01:52:57 字数 128 浏览 3 评论 0原文

Directory.EnumerateFilesGetFiles 之间有什么区别?

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

还要别的吗?

What is the difference between Directory.EnumerateFiles vs GetFiles?

Obviously one returns an array and the other return Enumerable.

Anything else?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

定格我的天空 2024-11-08 01:52:58

来自文档

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

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

From the docs:

The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

So basically, EnumerateFiles returns an IEnumerable which can be lazily evaluated somewhat, whereas GetFiles returns a string[] which has to be fully populated before it can return.

噩梦成真你也成魔 2024-11-08 01:52:58

EnumerateFiles 返回 IEnumerable 这意味着延迟执行。它仅在 .net 4 及更高版本中可用。

由于文件系统非常慢(尤其是对于大型文件夹),因此延迟执行对于顺序处理来说是一个真正的好处。取决于许多其他因素。

EnumerateFiles returns IEnumerable<string> and that implies deferred execution. It is only available in .net 4 and up.

As the File system is notoriously slow (especially for large folders) the deferred execution can be a real bonus for sequential processing. Depending on lots of other factors.

将军与妓 2024-11-08 01:52:58

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

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

When using EnumerateFiles, all speed is lost if you are then using .Last. This makes sense of course, because to get to the last file, it will need to enumerate all files, then grab the last one.

However, using .First or .FirstOrDefault becomes very fast, because it simply grabs the first item and moves on.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文