一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

C#中List<T>泛型集合类的全面解析与应用

时间:2026-08-06 07:36:50 编辑:袖梨 来源:一聚教程网

在C#中,List<T> 是一个非常常用的泛型集合类,属于 System.Collections.Generic 命名空间。List<T> 提供了一种灵活的方式来存储和管理一组元素,这些元素可以是任何类型的对象。下面,我们将详细解析 List<T> 的特性、使用方法、以及一些高级应用。

C#中List<T>泛型集合类的全面解析与应用

1. 什么是 List<T>?

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

2. List<T> 的核心特性

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

3. 基本用法示例

3.1 创建与初始化

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

3.2 添加元素

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

3.3 访问与修改

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

3.4 删除元素

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

4. 常用方法与属性

方法/属性说明示例
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();

5. 性能优化技巧

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

6. 与数组(Array)的比较

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

7. 实际应用场景

7.1 数据收集与处理

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

7.2 缓存管理

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);}

8. 总结

List<T> 是 C# 开发中不可或缺的集合类型,它结合了数组的索引访问优势和动态集合的灵活性。掌握其基本操作、性能特性和适用场景,能显著提升代码质量和开发效率。在实际项目中,应根据具体需求选择合适的集合类型,List<T> 通常是处理可变序列时的首选。

热门栏目