目录
该类在 System.Collections.Generic 命名空间。
List<T> 类 的特点:
- 是一个强类型的集合, 类型参数 T 指定列表中元素所允许的类型。
- 可以动态添加和删除元素,也可以在某个位置插入新元素。
- 支持通过索引访问元素,也支持对元素的查找操作。
List<T> Constructors
使用 List<T>() 默认构造函数:
public List ();
static void Main(string[] args) { List<string> dinosaurs = new List<string>(); // 使用默认构造函数初始化,该实例为空并且具有默认初始容量。 Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); dinosaurs.Add("Tyrannosaurus"); dinosaurs.Add("Amargasaurus"); dinosaurs.Add("Mamenchisaurus"); dinosaurs.Add("Deinonychus"); dinosaurs.Add("Compsognathus"); Console.WriteLine("输出dinosaurs 中所有的元素:"); foreach (string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); Console.WriteLine("Count: {0}", dinosaurs.Count); } Output: Capacity: 0 输出dinosaurs 中所有的元素: Tyrannosaurus Amargasaurus Mamenchisaurus Deinonychus Compsognathus Capacity: 8 Count: 5
- 使用默认的构造函数创建一个空列表。元素添加到列表中后, 列表的容量就会初始化扩大为可容纳4 ,个元素。
- 如果添加了第5个元素, 列表的大小就重新设置为包含8个元素。
- 如果8个元素还不够, 列表的大小就重新设置为包含16个元素。
- 每次都会将列表的容量重新设置为原来的2倍。
- 当列表的中的容量重新分配的时候,它会创建一个新的数组,使用Array.Copy()方法将旧数组中的元素复制到新数组中。
如果事先知道要存储的数据的个数,就可以利用列表的构造函数指定列表初始的容量大小
List<T>(Int32)
public List (int capacity);
- capacity 是 该对象最初可以存储的元素数。
如果 capacity
小于 0。 抛出 ArgumentOutOfRangeExceptionstatic void Main(string[] args) { List<string> dinosaurs = new List<string>(5); Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); dinosaurs.Add("Tyrannosaurus"); dinosaurs.Add("Amargasaurus"); dinosaurs.Add("Mamenchisaurus"); dinosaurs.Add("Deinonychus"); dinosaurs.Add("Deinonychus"); dinosaurs.Add("Deinonychus"); Console.WriteLine(); foreach (string s in dinosaurs) { Console.WriteLine(s); } Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
List<T>(IEnumerable<T>)
public List (System.Collections.Generic.IEnumerable<T> collection);
- collection : 表示一个集合,其元素被复制到List<T> 对象中。
如果 collection
为null
。抛出 ArgumentNullExceptionstatic void Main(string[] args) { List<string> dinosaurs1 = new List<string>(5) { "adas","huang", "cheng","tao"}; List<int> dinosaurs = new List<int>(5) { 5, 6, 7, 8, 9, 112 }; Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); Console.WriteLine(); foreach (var s in dinosaurs) { Console.WriteLine(s); } Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); } 输出: Capacity: 10 5 6 7 8 9 112 Capacity: 10
static void Main(string[] args) { string[] input = { "Brachiosaurus", "Amargasaurus","Mamenchisaurus" }; List<string> dinosaurs = new List<string>(input) { "huang","cheng","tao"}; // 注意这里初始化方法 Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); dinosaurs.Add("Tyrannosaurus"); dinosaurs.Add("Amargasaurus"); dinosaurs.Add("Mamenchisaurus"); dinosaurs.Add("Deinonychus"); dinosaurs.Add("Compsognathus"); dinosaurs.Add("Compsognathus"); dinosaurs.Add("Compsognathus"); Console.WriteLine(); foreach (string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); } 输出: Capacity: 6 Brachiosaurus Amargasaurus Mamenchisaurus huang cheng tao Tyrannosaurus Amargasaurus Mamenchisaurus Deinonychus Compsognathus Compsognathus Compsognathus Capacity: 24
Propertys
List<T>.Capacity
public int Capacity { get; set; }
- 获取或设置内部数据结构在不重新分配内存的情况下可以容纳的元素总数。
- 如果 Capacity 已设置为一个小于 Count 的值。抛出 ArgumentOutOfRangeException
- 当系统上没有足够的可用内存。抛出 OutOfMemoryException
static void Main(string[] args) { List<string> dinosaurs = new List<string>(); Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); dinosaurs.Add("Tyrannosaurus"); dinosaurs.Add("Amargasaurus"); dinosaurs.Add("Mamenchisaurus"); dinosaurs.Add("Deinonychus"); dinosaurs.Add("Compsognathus"); Console.WriteLine(); foreach (string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity); Console.WriteLine("Count: {0}", dinosaurs.Count); }