C# 數組、ArrayList和List的區別

之前有點搞不清數組、ArrayList和List<T>,感覺都能存放多個數據,但是又搞不清具體有什麼區別,今天重點看了下,首先就是數組。

(1)數組

//定義一個數組
int[] aaa = new int[3];
aaa[0] = 1;
aaa[1] = 2;
aaa[2] = 3;
由上面數組的定義可以看出,數組首先就要確定存放數據的類型,也就是說,數組中存放的數據都是一樣的;其次,

數組的長度都是固定好的,也就是在定義數組的時候,要確定數組可以存放多少個數據;再次,數組可以具有多個維

度,當然上面的簡單代碼沒有體現出來,比如要定義一個矩陣,就可以定義一個二維數組。

由上面的代碼還可以看出,數組的賦值也是很簡單的,注意數組第一個元素的角標是0。

(2)ArrayList

雖然數組的賦值取值很方便,但數組也有很多缺點,比如提前要知道數組的長度,在數組中插入元素比較麻煩,所

以有了ArrayList。ArrayList會隨着存儲數據的多少進行動態擴充,所以在定義一個ArrayList時是不需要提前確定長度

的。

//定義一個ArrayList
ArrayList alist = new ArrayList();
alist.Add(11);
alist.Add("aaa");
上面定義了一個ArrayList,可以看出不需要指定ArrayList實例alist的長度,往alist中添加數據時,調用Add方法即可;

同時,alist中可以存放不同的數據類型。所以ArrayList用起來也很方便,但也存在着問題,先看下面的代碼

foreach(int a in alist)
{
    Console.WriteLine(a);
}

假如要打印alist中的數據,就會報錯,因爲alist中可能存放多種數據類型,不是類型安全的。其次,由於alist中既可以

放值類型數據,又可以存放引用類型數據,因此就會存在裝箱和拆箱的操作,而裝箱和拆箱會損耗性能。

既然數組和ArrayList都存在着缺點,那麼就引入泛型List<T>。

(3)List<T>

//聲明一個泛型List
List<int> list = new List<int>();
list.Add(111);
list.Add(222);


由上面聲明的泛型List可以看出,在實例一個List時,不需要確定長度,這和ArrayList一樣。同時,在聲明的時候,

泛型List的數據類型也確定了,這就保證了類型安全,同時也就沒有了裝箱和拆箱的操作,這就是泛型List的好處吧。

還要明的是泛型List只能是一維的。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章