![](/img/trans.png)
[英]Is there a reason why we would use Directory.GetFiles() over Directory.EnumerateFiles()?
[英]What is the difference between Directory.EnumerateFiles vs Directory.GetFiles?
Directory.EnumerateFiles
與GetFiles
之間有什么區別?
顯然,一個返回一個數組,另一個返回 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.