1. Array
public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable
{
//////////////////
}
Array:長度是不變的(定長),裡面的資料元素是同類型的,可以說Array是同一種資料類型的集合
eg:
Int32[] array = new Int32[5];
Int32[] array = new Int32[] { 2, 3, 4 };//會根據初始化器中資料元素個數來確定該數組的大小
2. ArrayList
public class ArrayList : IList, ICollection, IEnumerable, ICloneable
{
//////////////
}
長度是可以動態改變的,裡面的資料元素可以是不同類型(實值型別、參考型別),可以說ArrayList 可以是多種資料類型的集合
ArrayList arrlist = new ArrayList();
//通過下面這兩個方法添加/刪除元素,動態改變長度,這兩個方法的參數都是object類型,如果向其傳入的參數是實值型別(ValueType)的話,會發生裝箱(boxing)操作,運行比較慢,有損效能,
eg:
public virtual int Add(object value);
public virtual void Remove(object obj);
3. List<T>
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
{
//////////////
}
是ArrayList類的泛型等效類並增強了功能,通過以下兩個方法添加/刪除元素,動態改變長度,這兩個方法的參數都是泛型型別,不會發生裝箱(boxing)操作,所以List<T>在.NET 2.0以上可以完全代替ArrayList,且應該多用List<T>
eg:
public void Add(T item);
public bool Remove(T item);
----------另外,繼承自IEnumberable介面(或IEnumerable <T>泛型介面)的類型都是可枚舉的,也就是可以用foreach來遍曆集合中的每一個元素