处理数据经常用到数组,而很多时候又不能确定数组的大小,或数组大小是动态变化的。如果按照C语言的方法,只能预先定义一个尽量大的数组,无视数组后面元素浪费的空间。但这是非常不合算的,C#中提供了一个类:List<>,这个类可以实现动态大小的数组。
Namespace: System.Collections.Generic
Assembly: mscorlib (in mscorlib.dll)
看下面的例子,很好的诠释了List<>类的用法:(来自MSDN http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx)
using System; using System.Collections.Generic; public class Example { public static void Main() { List<string> dinosaurs = new List<string>(); Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);//注意Capacity和Count是不同的概念,Capacity以2的整数次幂往上长 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); Console.WriteLine("\nContains(\"Deinonychus\"): {0}", dinosaurs.Contains("Deinonychus"));//判断是否存在某个元素 Console.WriteLine("\nInsert(2, \"Compsognathus\")"); dinosaurs.Insert(2, "Compsognathus");//插入 Console.WriteLine(); foreach(string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);//可以这样像数组一样直接调用 Console.WriteLine("\nRemove(\"Compsognathus\")"); dinosaurs.Remove("Compsognathus");//移除元素 Console.WriteLine(); foreach(string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } dinosaurs.TrimExcess();//手动设置Capacity的大小,使其等于Count值,这样就一个空间都不浪费了 Console.WriteLine("\nTrimExcess()"); Console.WriteLine("Capacity: {0}", dinosaurs.Capacity); Console.WriteLine("Count: {0}", dinosaurs.Count); dinosaurs.Clear();//清空,count变为零,但是Capacity的值没有变 Console.WriteLine("\nClear()"); Console.WriteLine("Capacity: {0}", dinosaurs.Capacity); Console.WriteLine("Count: {0}", dinosaurs.Count); } } /* This code example produces the following output: Capacity: 0 Tyrannosaurus Amargasaurus Mamenchisaurus Deinonychus Compsognathus Capacity: 8 Count: 5 Contains("Deinonychus"): True Insert(2, "Compsognathus") Tyrannosaurus Amargasaurus Compsognathus Mamenchisaurus Deinonychus Compsognathus dinosaurs[3]: Mamenchisaurus Remove("Compsognathus") Tyrannosaurus Amargasaurus Mamenchisaurus Deinonychus Compsognathus TrimExcess() Capacity: 5 Count: 5 Clear() Capacity: 5 Count: 0 */