C# 泛型与非泛型集合
C# 包含专门用于存储一系列值或对象的类,这些类被称为集合。
C# 中有两种类型的集合:非泛型集合和泛型集合。
System.Collections
命名空间包含非泛型集合类型,而 System.Collections.Generic
命名空间包含泛型集合类型。
在大多数情况下,建议使用泛型集合,因为它们比非泛型集合执行速度更快,并且通过在编译时捕获错误来最大限度地减少异常。
泛型集合
C# 在 System.Collections.Generic
命名空间中包含以下泛型集合类。
泛型集合 | 描述 |
---|---|
List<T> | 泛型 List<T> 包含指定类型的元素。当您向其中添加元素时,它会自动增长。 |
Dictionary<TKey,TValue> | Dictionary<TKey,TValue> 包含键值对。 |
SortedList<TKey,TValue> | SortedList 存储键值对。默认情况下,它会自动按键的升序添加元素。 |
Queue<T> | Queue<T> 以 FIFO(先进先出)方式存储值。它保持值添加的顺序。它提供 Enqueue() 方法来添加值,以及 Dequeue() 方法从集合中检索值。 |
Stack<T> | Stack<T> 以 LIFO(后进先出)方式存储值。它提供 Push() 方法来添加值,以及 Pop() 和 Peek() 方法来检索值。 |
HashSet<T> | HashSet<T> 包含不重复的元素。它消除重复元素。 |
非泛型集合
非泛型集合 | 用法 |
---|---|
ArrayList | ArrayList 像数组一样存储任何类型的对象。然而,与数组不同,ArrayList 无需指定大小,因为它会自动增长。 |
SortedList | SortedList 存储键值对。默认情况下,它会自动按键的升序排列元素。C# 包含泛型和非泛型 SortedList 集合。 |
Stack | Stack 以 LIFO(后进先出)方式存储值。它提供 Push() 方法来添加值,以及 Pop() 和 Peek() 方法来检索值。C# 包含泛型和非泛型 Stack。 |
Queue | Queue 以 FIFO(先进先出)方式存储值。它保持值添加的顺序。它提供 Enqueue() 方法来添加值,以及 Dequeue() 方法从集合中检索值。C# 包含泛型和非泛型 Queue。 |
Hashtable | Hashtable 存储键值对。它通过比较键的哈希值来检索值。 |
BitArray | BitArray 管理一个紧凑的位值数组,这些位值表示为布尔值,其中 true 表示位为开 (1),false 表示位为关 (0)。 |
接下来我们来看看每种集合类型。