.NET 集合与核心工具类深度解析:List、LinkedList、ArrayList、StringBuilder 与 DateTime
一、引言在 .NET 开发中集合和核心工具类的选择直接影响程序的性能、可维护性和内存效率。本文将对 .NET 中最常用的三种集合List、LinkedList、ArrayList以及两个核心工具类StringBuilder、DateTime进行深度解析通过横向对比帮助开发者做出最佳选择。二、三大集合横向对比3.1 ArrayList非泛型动态数组1. 基础信息命名空间System.Collections存储类型object可存放任意对象底层结构连续内存动态数组泛型否2. 核心特性优点支持数字索引访问自动扩容缺点类型不安全存取存在装箱拆箱编译无类型校验性能较低3. 常用属性Count集合内有效元素个数4. 常用方法Add(object)尾部添加元素Insert(索引, object)指定位置插入Remove(object)删除匹配元素RemoveAt(索引)根据下标删除IndexOf()查找元素下标Clear()清空所有元素5. 适用场景.NET Framework 早期老旧项目兼容新项目禁止使用3.2 List泛型列表1. 基础信息命名空间System.Collections.Generic存储类型泛型T固定单一类型无装箱拆箱底层结构连续内存动态数组泛型是2. 核心特性优点索引随机访问速度极快API 丰富支持 Linq 查询类型安全缺点中间位置插入/删除元素数组需要移位大数据效率低3. 常用属性Count元素数量Capacity底层数组容量4. 常用方法添加Add(T)、AddRange(集合)批量添加插入Insert(索引, T)删除Remove(T)、RemoveAt(索引)、RemoveAll(条件)查询Contains()、IndexOf()、Find()、FindAll()转换ToArray()转为数组排序Sort()自定义/默认排序5. 适用场景90% 日常开发场景查询多、遍历多、需要下标取值、少量增删3.3 LinkedList泛型链表1. 基础信息命名空间System.Collections.Generic底层结构双向链表分散内存节点存储组成单元LinkedListNodeT泛型是2. 核心特性优点任意位置增删仅修改节点指针无需移位效率极高缺点不支持数字索引随机查找必须从头遍历查询慢3. 常用属性Count节点总数First链表第一个节点Last链表最后一个节点4. 常用方法首尾新增AddFirst(T)、AddLast(T)指定节点插入AddBefore(节点,T)、AddAfter(节点,T)删除RemoveFirst()、RemoveLast()、Remove(节点)查找节点Find(T)、FindLast(T)5. 适用场景高频中间/首尾增删消息队列临时链表缓存无需索引查询三、StringBuilder 高效字符串工具1. 基础信息命名空间System.Text数据类型class引用类型2. 核心属性Length当前字符实际长度Capacity缓冲区总容量不足自动扩容3. 核心操作方法追加内容Append()、AppendLine()自动换行插入内容Insert(索引, 内容)删除内容Remove(起始索引, 删除长度)替换文本Replace(旧字符串, 新字符串)转换输出ToString()→ 转为普通 string4. 优缺点优点内部可变缓冲区频繁拼接不产生大量临时 string缺点少量单次拼接没必要使用会增加对象开销5. 适用场景循环拼接文本导出文件内容SQL 语句拼接长日志组装四、DateTime 时间日期处理1. 基础信息命名空间System数据类型struct值类型核心特性不可变所有修改方法返回新对象2. 静态只读属性Now本地当前日期时分秒毫秒UtcNow世界标准 UTC 时间Today本地当前日期时间 00:00:00MinValue时间最小值 0001/1/1MaxValue时间最大值 9999/12/313. 实例只读属性年月日时分秒Year、Month、Day、Hour、Minute、Second、Millisecond周期相关DayOfWeek星期枚举、DayOfYear年内第几天分段取值Date仅日期、TimeOfDay仅当日时长4. 常用实例方法时间增减AddYears、AddMonths、AddDays、AddHours、AddMinutes、AddSeconds格式化输出ToString(自定义格式)对比方法CompareTo、Equals5. 字符串与时间互转Parse(string)字符串转 DateTime格式错误直接抛异常TryParse(string, out DateTime)安全转换返回 bool 无报错6. 适用场景记录创建时间、过期时间时间差计算日志时间格式化五、开发选型口诀根据以上分析我们可以总结出以下选型口诀新项目一律不用 ArrayList频繁插入删除、不用下标 → LinkedList普通列表、查询为主 → List大量拼接字符串 → StringBuilder处理时间日期 → DateTime六、总结选择合适的集合和工具类是 .NET 开发中的重要技能。通过理解每种数据结构的底层实现、性能特点和适用场景开发者可以提升性能避免不必要的装箱拆箱和内存拷贝增强可维护性使用类型安全的泛型集合优化内存使用根据场景选择合适的数据结构提高开发效率掌握核心工具类的正确用法在实际开发中建议优先使用ListT作为默认选择仅在特定场景下考虑LinkedListT完全避免在新项目中使用ArrayList。对于字符串拼接和时间处理StringBuilder和DateTime提供了高效且安全的解决方案。七、思维导图