c# 集合相关的类
字典
.net中Dictionary本身时不支持线程安全的,如果要想使用支持线程安全的字典,那么我们就要使用ConcurrentDictionary了.
ConcurrentDictionary是Dictionary的线程安全版本,位于System.Collections.Concurrent的命名空间下,该命名空间下除了有ConcurrentDictionary,还有以下Class都是我们常用的那些类库的线程安全版本.
c#中的队列和栈
Queue代表这一个先进先出的对象集合,当你需要对各项进行先进先出访问时,可使用Queue队列。 反之使用Stack 。
不建议将 Queue
类用于新开发。 相反,我们建议使用泛型Queue<T>
类。
使用 ConcurrentQueue<T>
或 ConcurrentStack<T>
如果需要同时从多个线程访问集合。
官网文档:
- Queue 类 (System.Collections.Generic) | Microsoft Learn
- Stack 类 (System.Collections.Generic) | Microsoft Learn
- ConcurrentQueue 类 (System.Collections.Concurrent) | Microsoft Learn
- ConcurrentStack 类 (System.Collections.Concurrent) | Microsoft Learn
看这个文档就够了。
集合性能提升注意点
.NET 提供了很多集合类型,比如 List<T>
, Dictionary<T>
, 和 HashSet<T>
。所有这些集合都有动态的容量,当你添加更多的项目时,它们的大小会自动扩大。
当集合达到其大小限制时,它将分配一个新的更大的内存缓冲区,这意味着要进行额外的开销去分配容量。
所以你的代码应该像:List<int> list = new List<int>(Size);
更新于:2023.5.30