LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 集合框架详解:List、Dictionary 高效使用技巧

admin
2026年2月10日 23:8 本文热度 65
在 C#开发中,集合框架是处理数据的核心工具,而List和Dictionary又是日常开发中最常用的两个集合类型。很多开发者仅会基础的增删改查,却忽略了它们的性能陷阱和高效用法,导致代码运行效率低下。本文将从底层原理、核心用法、性能优化三个维度,详解这两个集合的高效使用技巧。

一、先搞懂底层:知己知彼才能用对

1. List:动态数组的本质

List的底层是动态扩容的数组,默认初始容量为 4。当添加元素超出当前容量时,会创建一个新的、容量为原容量 2 倍的数组,再将原数组元素拷贝过去 —— 这个 “扩容 + 拷贝” 的过程是性能损耗的核心来源。

2. Dictionary:哈希表的核心逻辑

Dictionary基于哈希表实现,通过计算键(Key)的哈希值确定元素存储位置,理想情况下查找、插入的时间复杂度为 O (1)。但如果哈希值冲突严重,会退化为链表结构,性能降至 O (n);同时,Dictionary也有容量和加载因子(默认 0.72)的限制,达到阈值时会触发扩容和重新哈希。

二、List高效使用技巧

1. 提前指定初始容量(核心优化)

既然List扩容会损耗性能,那么在已知元素数量时,初始化时指定容量是最有效的优化手段。

反例(低效):

正例(高效):

2. 遍历:优先用 for 而非 foreach(大数据量场景)

•foreach本质是调用IEnumerator枚举器,有轻微的额外开销;

•大数据量遍历(如 10 万 + 元素)时,for循环通过索引访问更高效。

对比示例:

3. 批量操作:用 AddRange 替代循环 Add

添加多个元素时,AddRange只需一次边界检查,而循环Add会多次检查,效率更低。

4. 清空元素:根据场景选 Clear 或新建 List

•Clear:仅清空元素,保留底层数组容量,适合后续还要添加元素的场景;
•新建 List:会释放原数组,适合不再使用该集合或需要大幅缩减内存的场景。

三、Dictionary高效使用技巧

1. 同样要指定初始容量

和List类似,Dictionary初始化时指定容量(最好略大于实际元素数),可避免扩容和重新哈希。

2. 避免哈希冲突:重写 GetHashCode(自定义类型作为 Key 时)

如果用自定义类型作为Dictionary的 Key,必须重写GetHashCode和Equals方法,否则会导致严重的哈希冲突,大幅降低性能。

反例(自定义类型未重写哈希方法):

正例(重写哈希和相等方法):

3. 查找元素:优先用 TryGetValue 而非 ContainsKey + 索引

常规写法是先调用ContainsKey判断是否存在,再用索引取值 —— 这会导致两次哈希计算;而TryGetValue只需一次哈希计算,性能更优。

反例(低效):

正例(高效):

4. 遍历:按需选择遍历方式

•仅需 Key:遍历Keys集合;

•仅需 Value:遍历Values集合;

•需 Key+Value:遍历KeyValuePair(避免拆箱)。

5. 避免使用非线程安全的并发操作

Dictionary不是线程安全的,多线程同时读写会导致异常或数据错乱。如果需要并发操作:

•轻量级并发:用lock加锁;

•高性能并发:使用ConcurrentDictionary(.NET Framework 4.0+)。

四、List 与 Dictionary 的选型建议

场景
推荐集合
​核心原因
按索引访问、有序存储
List<T>
索引访问 O (1),有序且内存连续
按 Key 快速查找、映射
Dictionary
Key 查找 O (1),映射关系清晰
频繁插入 / 删除中间元素
不推荐 List
List 中间插入删除 O (n),可改用 LinkedList
并发读写
ConcurrentDictionary
线程安全,无需手动加锁

总结

  1. List的核心优化点是提前指定初始容量,避免扩容拷贝,大数据量遍历优先用for,批量添加用AddRange;
  2. Dictionary的核心优化是减少哈希计算和冲突,优先用TryGetValue,自定义 Key 必须重写GetHashCode和Equals;
  3. 选型时根据 “有序索引访问” 或 “Key 映射查找” 场景区分,并发场景优先用线程安全集合。

掌握这些技巧,能让你的 C#代码在数据处理环节的性能提升一个档次,避免因集合使用不当导致的性能瓶颈。


阅读原文:原文链接


该文章在 2026/2/11 9:44:33 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved