C#泛型集合List 常用方法、LINQ整合与业务实战场景

AI 概述
本文为C# List完整实操指南,该泛型集合位于System.Collections.Generic,具备类型安全、动态扩容、支持索引访问等特性。文中展示创建、增删改查等基础用法,梳理常用API;讲解核心性能优化手段,推荐预分配容量、优先批量操作。对比List与数组、LinkedList适用场景,指出列表中间频繁增删存在数据移动开销。开发需结合业务合理选型,搭配LINQ使用,规避潜在性能问题。
目录
文章目录隐藏
  1.  List<T>是什么?
  2. List<T> 的核心特性
  3. 基本用法示例
  4. 常用方法与属性
  5. 性能优化技巧
  6. 与数组(Array)的比较
  7. 实际应用场景
  8. 结语

 C#泛型集合 List<T> 常用方法、LINQ 整合与业务实战场景

在 C#中,List<T> 是一个非常常用的泛型集合类,属于 System.Collections.Generic 命名空间。很多人只是简单调用 Add、foreach 完成业务,但并不清楚它底层扩容机制、读写性能短板,什么时候该换数组、什么时候改用链表。List<T> 提供了一种灵活的方式来存储和管理一组元素,这些元素可以是任何类型的对象。今天整理一份完整的 List<T>实操指南,从基础用法到性能优化一次性讲明白,日常开发直接当作参考手册使用。

 List<T>是什么?

List<T> 是 C# 中最常用的泛型集合类,位于 System.Collections.Generic 命名空间。它代表一个强类型、可动态调整大小的对象列表,提供了丰富的操作方法,是数组(Array)的现代化替代品。

List<T> 的核心特性

  • 类型安全:泛型参数 T 确保集合中只能存储指定类型的元素。
  • 动态扩容:无需预先指定大小,添加元素时自动扩展容量。
  • 索引访问:支持通过下标(从 0 开始)快速访问元素,如 list[0]
  • 丰富的方法:提供 Add、Remove、Find、Sort、ForEach 等常用操作。
  • LINQ 支持:可与 LINQ 无缝集成,进行查询、筛选、投影等操作。

基本用法示例

创建与初始化

// 创建空列表
List<string> names = new List<string>();
// 创建并初始化
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
// 指定初始容量(优化性能)
List<double> values = new List<double>(100);

添加元素

List<string> fruits = new List<string>();
fruits.Add("Apple");      // 添加单个元素
fruits.AddRange(new string[] { "Banana", "Orange" }); // 添加多个元素
fruits.Insert(1, "Mango"); // 在指定位置插入

访问与修改

List<int> scores = new List<int> { 85, 92, 78 };
int firstScore = scores[0];  // 85
scores[1] = 95;              // 修改第二个元素
// 遍历列表
foreach (int score in scores)
{
    Console.WriteLine(score);
}
// 使用 ForEach 方法
scores.ForEach(s => Console.WriteLine($"Score: {s}"));

删除元素

List<string> colors = new List<string> { "Red", "Green", "Blue", "Red" };
colors.Remove("Red");        // 删除第一个匹配项
colors.RemoveAt(0);          // 删除指定位置的元素
colors.RemoveAll(c => c.StartsWith("B")); // 删除所有满足条件的元素
colors.Clear();              // 清空列表

常用方法与属性

方法/属性 说明 示例
Count 获取元素数量 int count = list.Count;
Add(T item) 添加元素到末尾 list.Add("item");
AddRange(IEnumerable<T>) 添加多个元素 list.AddRange(array);
Insert(int index, T item) 在指定位置插入 list.Insert(0, "first");
Remove(T item) 删除第一个匹配项 list.Remove("target");
RemoveAt(int index) 删除指定位置元素 list.RemoveAt(0);
Contains(T item) 检查是否包含元素 bool has = list.Contains("x");
IndexOf(T item) 查找元素索引 int idx = list.IndexOf("x");
Sort() 排序(默认升序) list.Sort();
Reverse() 反转元素顺序 list.Reverse();
ToArray() 转换为数组 T[] arr = list.ToArray();

性能优化技巧

  • 预分配容量:如果知道大致元素数量,创建时指定初始容量可减少扩容开销。
  • 避免频繁插入/删除:在列表中间频繁插入或删除元素会导致大量数据移动,考虑使用 LinkedList<T>
  • 使用 Capacity 属性:一次性添加大量元素前,可设置合适的容量。
  • 批量操作:使用 AddRange 而非循环 Add
  • 考虑只读集合:如果不需修改,使用 AsReadOnly() 返回只读视图。

与数组(Array)的比较

特性 List<T> Array
大小 动态调整 固定长度
性能 插入/删除可能需移动元素 随机访问最快
内存 有额外开销(容量管理) 最紧凑
功能 丰富的内置方法 基本操作
适用场景 元素数量变化频繁 大小固定、性能要求高

实际应用场景

数据收集与处理

// 从数据库读取用户列表
List<User> users = dbContext.Users.ToList();
// 使用 LINQ 筛选
List<User> activeUsers = users
    .Where(u => u.IsActive)
    .OrderBy(u => u.Name)
    .ToList();

缓存管理

public class CacheManager<T>
{
    private List<T> _cache = new List<T>();
    public void AddItem(T item) => _cache.Add(item);
    public T GetItem(Predicate<T> match) => _cache.Find(match);
}

结语

绝大多数场景下List<T>都是我们处理可变序列的第一选择。但不能无脑使用,明白它动态扩容的代价、中间增删数据的性能缺陷,结合业务场景权衡数组、LinkedList 等其他集合。熟练用好List<T>内置方法搭配 LINQ,既能简化代码,也能避开很多隐性性能坑,写出更规范高效的 C# 代码。

以上关于C#泛型集合List 常用方法、LINQ整合与业务实战场景的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

33

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » C#泛型集合List 常用方法、LINQ整合与业务实战场景

发表回复