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以后进先出的方式存储这些值。它提供了一个Push()方法来添加值,以及Pop()和Peek()方法来检索值。C#既包括泛型栈,也包括非泛型栈。 |
Queue | Queue以先进先出(FIFO)的方式存储值。它保持添加值的顺序。它提供了一个Enqueue()方法来添加值,以及一个Dequeue()方法来从集合中检索值。c#包括泛型和非泛型队列。 |
Hashtable | Hashtable存储键和值对。它通过比较键的散列值来检索值。 |
BitArray | BitArray 管理一个紧凑的位值数组,这些值用布尔值表示,其中true表示位为on(1),false表示位为off。 |
接下来章节,让我们看看每种类型的集合。