常用的集合類型

集合型別代表不同的資料收集方式,例如雜湊表、佇列、堆疊、包、字典和清單。

所有集合都是直接或間接以 ICollectionICollection<T> 介面為基礎。 IListIDictionary 及其泛型對應項目全都衍生自這兩個介面。

在以 IList 為基礎或直接在 ICollection 上的集合中,每個元素只包含一個值。 這些類型包括:

在以 IDictionary 介面為基礎的集合中,每個元素都包含索引鍵和值。 這些類型包括:

KeyedCollection<TKey,TItem> 類別是唯一的,因為這是將索引鍵內嵌在值內的值清單。 因此,其行為就像清單和字典一樣。

需要有效率的多執行緒集合存取時,請在 System.Collections.Concurrent 命名空間中使用泛型集合。

QueueQueue<T> 類別提供先進先出清單。 StackStack<T> 類別提供後進先出清單。

強類型

泛型集合是強式類型的最佳解決方案。 例如,在 List<Int32> 集合中加入 Int32 以外的任何型別元素會導致編譯時期錯誤。 不過如果語言不支援泛型,System.Collections 命名空間就會包含抽象基底類別,可加以延伸以建立強式指派型別的集合類別。 這些基底類別如下:

集合的變化方式

集合會因元素的儲存、排序及比較方式,以及其執行搜尋的方式而有所不同。

SortedList 類別和 SortedList<TKey,TValue> 泛型類別提供排序版本的 Hashtable 類別與 Dictionary<TKey,TValue> 泛型類別。

所有集合都使用以零為起始的索引,Array 除外,它能允許不是以零起始的陣列。

您可以透過索引鍵或元素的索引來存取 SortedListKeyedCollection<TKey,TItem> 的元素。 您只能透過元素的索引鍵來存取 HashtableDictionary<TKey,TValue> 的元素。

搭配集合型別使用 LINQ

LINQ to Objects 功能提供一種常見模式,可用於存取任何實作 IEnumerableIEnumerable<T> 型別的記憶體內部物件。 LINQ 查詢具有數個優於標準建構的優點,例如 foreach 迴圈:

  • 簡潔明瞭,更容易瞭解。
  • 可篩選、排序和分組資料。
  • 可改善效能。

如需詳細資訊,請參閱 LINQ to Objects (C#)LINQ to Objects (Visual Basic)Parallel LINQ (PLINQ)

標題 描述
集合和資料結構 討論 .NET 中可用的各種集合類型,包括堆疊、佇列、清單、陣列和字典。
Hashtable 和 Dictionary 集合類型 說明泛型和非泛型雜湊字典類型的功能。
排序集合類型 說明提供清單和集合之排序功能的類別。
泛型 說明泛型功能,包括 .NET 所提供的泛型集合、委派與介面。 提供 C#、Visual Basic 和 Visual C++ 功能說明文件的連結,以及支援技術 (例如反映) 的連結。

參考

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey,TValue>