集合類型代表收集數據的不同方式,例如哈希表、佇列、堆疊、包、字典和清單。
所有集合都是直接或間接地以ICollection或ICollection<T>介面為基礎。 IList 和 IDictionary 及其泛型對應專案全都衍生自這兩個介面。
在以 IList 或 ICollection 直接為基礎的集合中,每個元素只包含一個值。 這些類型包括:
在以IDictionary接口為基礎的集合中,每個元素都包含索引鍵和值。 這些類型包括:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
類別 KeyedCollection<TKey,TItem> 是獨特的,因為它是一個將索引鍵嵌入到值中的值清單。 因此,其行為就像清單和字典一樣。
當您需要有效率的多線程集合存取時,請使用 命名空間中的 System.Collections.Concurrent 泛型集合。
Queue和 Queue<T> 類別會提供先出清單。 Stack和Stack<T>類別提供後進先出清單。
強式輸入
泛型集合是強式輸入的最佳解決方案。 例如,將任何非 Int32 類型的元素加入至 List<Int32>
集合時,會導致編譯時期錯誤。 不過,如果您的語言不支援泛型, System.Collections 命名空間會包含您可以擴充的抽象基類,以建立強型別的集合類別。 這些基類包括:
集合的多樣性
集合會因儲存、排序及比較元素的方式,以及其執行搜尋的方式而有所不同。
SortedList類別和SortedList<TKey,TValue>泛型類別提供Hashtable類別及Dictionary<TKey,TValue>泛型類別的排序版本。
除了 Array 允許不是以零起始的陣列之外,所有集合都使用零起始的索引。
您可以藉由索引鍵或元素的索引來存取 SortedList 或 KeyedCollection<TKey,TItem> 的元素。 您只能透過元素的鍵值來存取 Hashtable 或 Dictionary<TKey,TValue> 的元素。
搭配集合類型使用LINQ
LINQ to Objects 功能提供一般模式來存取任何實作 IEnumerable 或 IEnumerable<T> 型別的記憶體內部物件。 LINQ 查詢在標準建構方面有數個優點,例如 foreach
迴圈:
- 它們簡潔明瞭,更容易理解。
- 他們可以篩選、排序和群組數據。
- 它們可以改善效能。
如需詳細資訊,請參閱 LINQ to Objects (C#)、LINQ to Objects (Visual Basic)和 Parallel LINQ (PLINQ)。
相關主題
標題 | 說明 |
---|---|
集合和數據結構 | 討論 .NET 中可用的各種集合類型,包括堆棧、佇列、清單、陣列和字典。 |
哈希表和字典集合類型 | 描述泛型和非泛型哈希型字典類型的功能。 |
已排序的集合類型 | 描述提供清單和集合排序功能的類別。 |
泛型 | 描述泛型功能,包括 .NET 所提供的泛型集合、委派和介面。 提供 C#、Visual Basic 和 Visual C++ 功能文件的連結,以及支援反映等技術。 |
參考文獻
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>