C#中數組、ArrayList和List三者的區別

數組在內存中是連續存儲的,因此它的索引速度很是快,並且賦值與修改元素也很簡單。數組

string[] s = new string[2];安全

s[0] = "a";性能

s[1] = "b";對象

可是數組存在一些不足的地方。在數組的兩個數據間插入數據是很麻煩的,並且在聲明數組的時候必須指定數組的長度,數組的長度過長,會形成內存浪費,過段會形成數據溢出的錯誤。若是在聲明數組時咱們不清楚數組的長度,就會變得很麻煩。繼承

  ArrayList: 繼承Ilist接口,提供了數據存儲和檢索。ArrayList對象的大小是按照其中存儲的數據來動態擴充與收縮的。因此,在聲明ArrayList對象時並不須要指定它的長度。索引

ArrayList list = new ArrayList();接口

//新增內存

list.Add("ad");字符串

list.Add(123); string

//修改數據

list[1] = 2;
//插入數據

list.Insert(0,"sfsd");

從上面的例子看,不只插入了字符串,並且插入了數字,這樣在ArrayList中插入不一樣類型是容許的。由於ArrayList會把全部插入其中的數據當作object類型處理。

極可能會報類型不匹配的錯誤,也就是ArrayList不是類型安全的。在存儲或檢索類型時一般發生裝箱和拆箱的操做,帶來很大的性能問題。

由於ArrayList存在類型不安全的特色,因此出現了泛型的概念。List是ArrayList類的泛型等效類,用法與ArrayList相似,由於List也繼承IList接口。最大的區別是:

在聲明List集合時,咱們同時須要爲List集合聲明數據類型:

List<string> list = new List<string>();

//新增數據

list.Add("asd");

//修改數據

list[0] = "qwe";

相關文章
相關標籤/搜索