C# 非泛型,泛型,并发集合

C# 包括存储一系列值或对象的专用类,称为集合。 C# 中有三种类型的集合:非泛型集合,泛型集合和并发集合。 System.Collections 命名空间包含非泛型集合类型,System.Collections.Generic 命名空间包含泛型集合类型。 System.Collections.Concurrent 下面包含并发集合(都是泛型了)

在大多数情况下,建议使用泛型集合,因为它们比非泛型集合执行得更快,还可以得到强类型的好处。(打点,编译出错提示)。 在有并发,多线程,Task的场景下可以使用 并发集合。

非泛型集合

非泛型集合 描述
ArrayList ArrayList 存储任何类型的对象,如数组。但是,不需要像数组一样指定 ArrayList 的大小,因为它会自动增长。
Hashtable Hashtable 存储键值对。它通过比较键的哈希值来检索值。
SortedList SortedList 存储键值对。默认情况下,它会自动按键的升序排列元素。
Queue Queue以 FIFO 样式(先进先出)存储值。它保持添加值的顺序。它提供了一个 Enqueue() 方法来添加值和一个 Dequeue() 方法来从集合中检索值。 C# 包括泛型和非泛型队列。
Stack Stack 以 LIFO 样式(后进先出)存储值。它提供了 Push() 方法来添加值和 Pop() 和 Peek() 方法来检索值。 C# 包括泛型和非泛型堆栈。
BitArray BitArray 管理一个紧凑的位值数组,这些值表示为布尔值,其中 true 表示该位打开 (1),false 表示该位关闭 (0)。

泛型集合

C# 在 System.Collections.Generic 命名空间中包含以下泛型集合类。

泛型集合 描述
List 泛型 List 包含指定类型的元素。 当您在其中添加元素时,它会自动增长。
Dictionary<TKey,TValue> Dictionary<TKey,TValue> 包含键值对。
SortedList<TKey,TValue> SortedList<TKey,TValue> 存储键值对。 默认情况下,它会自动按键的升序添加元素。
Queue Queue 以 FIFO 样式(先进先出)存储值。 它保持添加值的顺序。 它提供了一个 Enqueue() 方法来添加值和一个 Dequeue() 方法来从集合中检索值。
Stack Stack 将值存储为 LIFO(后进先出)。 它提供了 Push() 方法来添加值和 Pop() 和 Peek() 方法来检索值。
Hashset Hashset 包含非重复元素。 它消除了重复的元素。

并发集合

并发集合 描述
ConcurrentBag< List 的并发版本
ConcurrentDictionary<TKey,TValue> Dictionary<TKey,TValue> 的并发版本
ConcurrentQueue Queue 的并发版本
ConcurrentStack Stack 的并发版本
BlockingCollection 先进先出,主要用来做生产消费者模式,类似于 Goang channel
Channel 先进先出,主要用来做生产消费者模式,跟 Goang channel更像了

代码主要分布在 https://github.com/dotnet/runtime/blob/main/src/libraries/System.Collections.Concurrent 下面

上一篇:C# 泛型约束
下一篇:C# List
最近更新的
...