28
A
回答
66
IEnumerable<T>
是以下擴展或實現的基礎接口。它不允許直接訪問並且是隻讀的。所以只有在你打算遍歷集合時才使用它。ICollection<T>
extendIEnumerable<T>
此外還允許添加,刪除,測試集合中是否存在元素並獲取元素的總數。它不允許通過索引直接訪問元素。這將是一個O(n)操作,因爲您需要開始遍歷它直到找到相應的元素。IList<T>
延伸ICollection<T>
(因此它繼承了它的所有屬性),但另外允許通過索引直接訪問元素。這是一個O(1)操作。List<T>
只是IList<T>
接口的具體實現。
在您的代碼中,您應該始終公開對象層次結構中對應於調用者需求的最高類型。因此,例如,如果調用者只會枚舉數據集,請使用IEnumerable<T>
。如果他們需要通過索引直接訪問元素,則會暴露IList<T>
。
List<T>
只應在您的代碼內部使用,但通常不會出現在您公開的方法的簽名中。這給你更多的靈活性,因爲你可以很容易地交換具體的實現而不會違約。
相關問題
- 1. IEnumerable和Array,IList和List之間有什麼區別?
- 2. XmlSerializer - IEnumerable或IList作爲LIst
- 3. List和IEnumerable之間的實際區別
- 4. ImmutableList和List之間的一般性能比較?
- 5. LINQ IEnumerable和List
- 6. confused about linq和IEnumerable或IList
- 7. Linq List比較
- 8. list comparison比較
- 9. Stata:變量之間的比較,但個人之間的比較
- 10. 柱之間比較
- 11. List,IList,IEnumerable,IQueryable,ICollection,這是最靈活的返回類型?
- 12. intN_t和uintN_t之間的比較
- 13. SOAP和XML之間的比較RPC
- 14. Hyper-V和PowerShell之間的比較vShpere
- 15. IBM MobileFirstPlatform V7.1和V8.0之間的比較
- 16. 指針和整數之間的比較?
- 17. 指針和整數之間的比較
- 18. OpenMP和矢量化之間的比較
- 19. woodstox和sjsxp之間的比較
- 20. MAX(長)和null之間的JPQL比較
- 21. iphone OS 3.0和3.1.3之間的比較?
- 22. Cross Document Messaging和WebSockets之間的比較
- 23. int和argv之間的比較
- 24. ROR和PHP之間的比較
- 25. timsort和quicksort之間的比較
- 26. FLEX,JavaFX和Silverlight之間的比較
- 27. 比較Ext.data.JsonReader和Ext.data.ArrayReader之間的性能
- 28. 指針和整數之間的比較
- 29. Opnet和NS-2之間的比較
- 30. Petalinux和FreeRTOS之間的定性比較
謝謝,很明顯。對於響應時間,當我嘗試查找元素或對集合進行排序時,它們中最好的是什麼? –
使用LINQ你可以通過'IEnumerable'來實現。 –
這是一個很好的資源,Hashset適合它嗎? – Evonet