C# List<T>

命名空间:System.Collections.Generic

基本等同于 Java 的 ArrayList<T>

性能

不同于 Java 的 ArrayList<T>,在存储值类型的元素时不会发生装箱和拆箱。

构造函数

  • List<T>():默认初始容量。
  • List<T>(Int32):指定初始容量。
  • List<T>(IEnumerable<T>):复制某集合。

属性

  • Capacity获取设置容量。
  • Count:获取元素数。

方法

  • Add(T):将元素添加到结尾。
  • AddRange(IEnumerable<T>):将某集合的所有元素添加到结尾。
  • Clear():移除所有元素。
  • Contains(T):确定某元素是否存在。
  • Insert(Int32, T):将某元素添加到指定索引处。
  • Remove(T):移除某元素的第一个匹配项。
  • RemoveAt(Int32):移除指定索引处的元素。
  • Sort():使用默认比较器排序。 要求元素实现了 IComparable 接口。否则应该传入一个 IComparer<T>(比较器)参数。(或 Comparison<T> 委托)
  • ToArray():将元素复制到新数组中。

其他

  • 直接使用 [] 获取或设置某索引的元素。

  • 简化初始化:

    List<int> list = new List<int>
    {
        1,
        2,
        3,
        4,
        5
    };
    

线程安全

多个线程读取是安全的,但是如果在读取时修改集合则可能会出现问题。若要保证线程安全需要在读取或写入操作期间锁定集合。如果要允许多个线程访问集合以读取和写入,必须实现自己的同步。或者使用 ConcurrentBag

posted @ 2025-08-19 21:55  Varc  阅读(17)  评论(0)    收藏  举报