命名空间: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。
