建议21:选择正确的集合
要选择正确的集合,首先要了解一些数据结构的知识。所谓数据结构,就是相互之间存在一种或多种特定关系的数据元素的集合。
集合的分类参考下图:
由于非泛型集合存在效率低及非类型安全的缺点,所以这里只讨论泛型集合。
如果集合的数目固定并且不涉及转型,使用数组效率高,否则使用List
顺序存取结构,即线性表。线性表可动态地扩大和缩小,它在一片连续的区域中存储数据元素。线性表不能按照索引进行查找,它是通过对地址的引用来搜索元素的,为了找到某个元素,它必须遍历所有元素, 直到找到对应元素为止。所以,线性表的优点是插入和删除数据效率高,缺点是查找的效率相对低一些。
队列Queue
根据队列的特点,可以用它来处理并发命令等场景:先让所有客户端的命令入队,然后,由专门的工作线程来执行命令。在分布式中的消息队列就是一个典型的队列应用实例。
栈Stack
字典Dictionary
双向链表LinkedList
还有几个类型:SortedList
在命名空间System.Collections.Concurrent下,还涉及几个多线程集合类:ConcurrentBag
在实际工作中,应该根据需要选择合适的集合类。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技