2011-04-22 53 views
2

我在.NET應用程序中有一個函數,它對文件集合進行操作並將一些文件寫入磁盤。我想返回已寫入磁盤的文件名的集合。我要處理的所有返回的集合是循環遍歷每個集合並對該文件執行操作。我最初以爲在這種情況下String數組是最好的,但我想在這裏可能會問,以防另一個結構可能更好。例如,如果我只是循環瀏覽集合,那麼LIST<String>會過度殺傷?我正在使用VB.NET編寫函數,但C#示例也很好。謝謝。是一個字符串數組是否可以傳回一個函數中的值集合的好結構?

回答

5

如果您真正需要做的就是遍歷結果,從函數返回IEnumerable<string>就足夠了。

這可以防止將調用者耦合到任何特定的數據結構......他們需要的東西都是可以迭代的東西。然後,你的實現可以自由使用,並返回任何結構是合理的 - 一個List<string>,一個HashSet<string>,一個string[] ......它並不重要。實際上,如果您需要,您可以自由創建除簡單列表之外的數據結構 - 只要它實現IEnumerable<string>接口,您的呼叫者不受影響。

我認爲需要考慮的另一個問題是數組是否是一個內部使用來建立一組文件名的好結構。是一個固定大小但可變的集合真的是您的操作的最佳構造?通常,這些操作不知道它們將操作多少個項目 - 在這種情況下,可變尺寸的集合(如List<>HashSet<>)更有意義。那麼爲什麼要將這樣一個集合轉換成一個數組而僅僅爲了返回而花費呢?

+0

我真的很喜歡你在最後一段中說的話。你說得好,我可能沒有固定數量的文件名。謝謝。 – webworm 2011-04-23 00:09:37

2

右出框架設計準則 - 卡薩和Hejlsberg

8.1 「身高:使用集合到陣列的公共API」

8.3.3 「身高:收藏過陣」

但是

考慮使用低級別API中的數組來mi最大限度地減少內存消耗並最大限度提高性能(也是8.3.3的一部分)

相關問題