none
請問 List<T> 與 Collection<T> 的差別 RRS feed

  • 問題

  • 泛型與法中有許多種集合物件
    但其中看到 List<T> 與 Collection<T> 這兩種,看起來都一樣,不太了解其中的差異

    請問這兩種集合使用起來有合差別,效能上是否有其優劣

    謝謝

    2006年5月18日 上午 02:51

解答

  • List<T> 的 namespace 是 System.Collections.Generic, 而 Collection<T> 的 namespace 則是System.Collections.ObjectModel

    List<T> 的功能確實比較強, 相對的結構也較複雜, 如果只是作為資料傳遞用, 只要使用較簡化的 Collection<T>, 使用 List<T> 會較為浪費資源。

    2006年5月24日 上午 05:44

所有回覆

  • List<T> 與 Collection<T> 實作的介面不同, Collection<T> 實作 IColleciton<T> 介面, 而 List<T> 則實作 IList<T> 介面。而 IList<T> 又實作了 ICollection<T> 介面。

    ICollection<T> 說明一種容器類別, 可以加入或刪除物件, 以及查詢是含有特定物件。

    IList<T> 則是在 ICollection<T> 上再加了整數指標 (index), 可以像陣列似的存取 index 所指的物件。但又可以再指定的 index 位置上插入或刪除物件, index 後的物件將會往後或往前移動, 這個特性又不算陣列, 所以稱為 List。

     

    2006年5月19日 上午 01:08
  • 謝謝您的回答,但還是有問題

    在 MSDN 查詢到的 Collection<T> 與 List<T> 所實做的介面都是
    IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable 等
    且使用時兩者都可以使用 index 取得集合中指定的元素,並且都可以使用 Insert 指定元素插入的位置,以上看來兩者都是相同的

    不過 List<T> 的功能確實較多,如 AddRange, Find.., Sort, ... 等 Collection<T> 所沒有的功能,不知道如果說 List<T> 是 Collection<T> 的加強版是否恰當?

    但以上這樣卻還是看不出兩者之間效能上的差異,如果效能差異不的,那麼則會令人懷疑 Collection<T> 存在的價值,或者是 Collection<T> 其實是其他及合物件的基底,這些是我所不能了解的地方

    2006年5月19日 上午 01:36
  • List<T> 的 namespace 是 System.Collections.Generic, 而 Collection<T> 的 namespace 則是System.Collections.ObjectModel

    List<T> 的功能確實比較強, 相對的結構也較複雜, 如果只是作為資料傳遞用, 只要使用較簡化的 Collection<T>, 使用 List<T> 會較為浪費資源。

    2006年5月24日 上午 05:44
  • 了解~

    非常感謝您的回覆

    2006年5月24日 上午 09:00