我在.NET應用程序中有一個函數,它對文件集合進行操作並將一些文件寫入磁盤。我想返回已寫入磁盤的文件名的集合。我要處理的所有返回的集合是循環遍歷每個集合並對該文件執行操作。我最初以爲在這種情況下String數組是最好的,但我想在這裏可能會問,以防另一個結構可能更好。例如,如果我只是循環瀏覽集合,那麼LIST<String>
會過度殺傷?我正在使用VB.NET編寫函數,但C#示例也很好。謝謝。是一個字符串數組是否可以傳回一個函數中的值集合的好結構?
2
A
回答
5
如果您真正需要做的就是遍歷結果,從函數返回IEnumerable<string>
就足夠了。
這可以防止將調用者耦合到任何特定的數據結構......他們需要的東西都是可以迭代的東西。然後,你的實現可以自由使用,並返回任何結構是合理的 - 一個List<string>
,一個HashSet<string>
,一個string[]
......它並不重要。實際上,如果您需要,您可以自由創建除簡單列表之外的數據結構 - 只要它實現IEnumerable<string>
接口,您的呼叫者不受影響。
我認爲需要考慮的另一個問題是數組是否是一個內部使用來建立一組文件名的好結構。是一個固定大小但可變的集合真的是您的操作的最佳構造?通常,這些操作不知道它們將操作多少個項目 - 在這種情況下,可變尺寸的集合(如List<>
或HashSet<>
)更有意義。那麼爲什麼要將這樣一個集合轉換成一個數組而僅僅爲了返回而花費呢?
2
右出框架設計準則 - 卡薩和Hejlsberg
8.1 「身高:使用集合到陣列的公共API」
8.3.3 「身高:收藏過陣」
但是
「考慮使用低級別API中的數組來mi最大限度地減少內存消耗並最大限度提高性能(也是8.3.3的一部分)
相關問題
- 1. 傳遞字符串函數並返回一個結構
- 2. 需要傳遞一個字符串數組到一個集合
- 3. numpy vectorized:檢查數組中的字符串是否以另一個數組中的字符串結尾
- 4. 是否可以將字符串數組轉換爲一個字符串?
- 5. 是否可以從Sybase函數返回一個數字列表?
- 6. 是否有一個數據結構可以保存.NET中的數據集?
- 7. 我應該從函數中返回一個數組還是一個集合?
- 8. 是否有一個本地php函數來查看一個值的數組是否在另一個數組中?
- 9. 函數來確定一組是否是另一個的子集
- 10. 確定是否可以從另一個字符串中的字符子集創建一個字符串
- 11. ng-list可以返回一個數字而不是字符串數組嗎?
- 12. 檢查一個字符串是否可以由Javascript中另一個字符串中的字符組成
- 13. ANSI C - 函數是否可以返回另一個函數?
- 14. 遍歷一個數組,並檢查值中的一個是一個字符串
- 15. C中傳遞一個字符串函數,那麼返回一個字符串
- 16. 是否可以使用一個替換函數來替換一個字段中的多個字符串?
- 17. 是否有函數來測試一個字符串變量是否是一個數值?
- 18. 是否有一個相當於python中非唯一集合的數據結構?
- 19. 如何從一個mongodb集合函數返回一個字符串值而不是Json
- 20. 是否有一個函數將EXCEPTION_POINTERS結構轉換爲字符串?
- 21. 是否可以構造一個「無限」字符串?
- 22. 複製一個字符串轉換成一個結構數組
- 23. 字符串集合的數據結構
- 24. 檢查一個字符串是否以PHP中的數字結尾
- 25. 將多個數組值組合成一個字符串值?
- 26. 查找一個字符串是否爲另一個字符串的數據結構
- 27. 從一個函數返回一個廣泛的結果(字符串值)
- 28. 是否可以在Go函數中返回結構的動態數組?
- 29. c傳遞一個字符串到函數然後返回一個字符串
- 30. 如何獲得一個字符串是否是T-SQL中的一個數字
我真的很喜歡你在最後一段中說的話。你說得好,我可能沒有固定數量的文件名。謝謝。 – webworm 2011-04-23 00:09:37