簡體   English   中英

Directory.EnumerateFiles 與 Directory.GetFiles 有什么區別?

[英]What is the difference between Directory.EnumerateFiles vs Directory.GetFiles?

Directory.EnumerateFilesGetFiles之間有什么區別?

顯然,一個返回一個數組,另一個返回 Enumerable。

還要別的嗎?

文檔

EnumerateFiles 和 GetFiles 方法的區別如下: 當您使用 EnumerateFiles 時,您可以在返回整個集合之前開始枚舉名稱集合; 使用 GetFiles 時,必須等待整個名稱數組返回,然后才能訪問該數組。 因此,當您處理許多文件和目錄時,EnumerateFiles 會更高效。

所以基本上, EnumerateFiles返回一個IEnumerable ,它可以在某種程度上被懶惰地評估,而GetFiles返回一個string[] ,它必須在它可以返回之前完全填充。

EnumerateFiles返回IEnumerable<string> ,這意味着延遲執行。 它僅在 Fx4 及更高版本中可用。

由於文件系統是出了名的慢(特別是對於大文件夾),因此延遲執行對於順序處理來說可能是一個真正的好處。 取決於許多其他因素。

使用 EnumerateFiles 時,如果您當時使用.Last ,則所有速度都會丟失。 這當然是有道理的,因為要獲取最后一個文件,它需要枚舉所有文件,然后獲取最后一個文件。

然而,使用.First.FirstOrDefault變得非常快,因為它只是簡單地抓取第一項並繼續.FirstOrDefault

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM