1、命名空間:
2、描述:
1)、表示可通過索引訪問的對象的強類型列表;提供用於對列表進行搜索、排序和操作的方法。
2)、是ArrayList類的泛型等效類。
3)、可以使用一個整數索引訪問此集合中的元素;索引從 零 開始。
4)、可以接收null空引用(VB中的Nothing)。
5)、允許重復元素
3、創建及初始化:
List<string> myList = new List<string>();//初始Capacity為 零
List<string> myList2 = new List<string>(30); //初始Capacity為 30
List<string> myList3 = new List<string>(new string[] { "1", "a", "2", "b" });//初始Capacity 為 4,並且元素已被復制
4、Capacity與Count
1)、Capacity在需要調整大小之前可存儲的元素數;Count實際存儲的元素數。
2)、Capacity總是大於或者等於Count
通過Reflector查看add()方法對Capacity和Count的影響:
在 List<T>中:
private T[] items;
private int _size;
public int Count{
get{
return this._size;
}
}
public int Capacity
{
get{
return this._items.Length;
}
set{
//......
}
}
當我們調用Add方法添加元素的時候,其內部實現為:
public void Add(T item)
{
if(this._size == this._items.Length)
{
this.EnsureCapacity(this._size + 1); //擴充Capatity
}
this._items[this._size++] = item;
//.......
}
private void EnsureCapacity(int min)
{
if (this._items.Length < min)
{
int num = (this._items.Length == 0) ? 4 : (this._items.Length * 2);
if (num < min)
{
num = min;
}
this.Capacity = num;
}
}
至此,Capacity和Count之間的異同可以一目了然。
通過TrimExcess 方法可以使Capacity 等於 Count;
TrimExcess的內部實現:
public void TrimExcess()
{
int num = (int) (this._items.Length * 0.9);
if (this._size < num)
{
this.Capacity = this._size;
}
}
在這裡,我們也可以明白MSDN上的這句話:“如果列表大於容量的 90%,則 TrimExcess 方法將不執行任何操作”。
5、遍歷元素:
foreach (string s in myList)
{
Console.WriteLine("
El: {0}", s);
}
6、插入元素 By Insert:
myList.Insert(index, "VB"); //插入到指定的索引處(index不能大於Capacity-1)
7、移除元素 By Remove:
myList.Remove("C#");//移除特定對象的第一個匹配項:如有兩個“C#”,則移除一個既索引小的那個。