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以后进先出的方式存储这些值。它提供了一个Push()方法来添加值,以及Pop()和Peek()方法来检索值。C#既包括泛型栈,也包括非泛型栈。

Queue

Queue以先进先出(FIFO)的方式存储值。它保持添加值的顺序。它提供了一个Enqueue()方法来添加值,以及一个Dequeue()方法来从集合中检索值。c#包括泛型和非泛型队列。

Hashtable

Hashtable存储键和值对。它通过比较键的散列值来检索值。

BitArray

BitArray 管理一个紧凑的位值数组,这些值用布尔值表示,其中true表示位为on(1),false表示位为off。

接下来章节,让我们看看每种类型的集合。