C 陣列 ArrayList和List三者的區別

2021-09-19 01:25:46 字數 1429 閱讀 7647

目錄

c#中陣列、arraylist和list三者的區別

c#中arraylist和list的區別

先出現的陣列,陣列是連續儲存,因此可以快速而容易地從頭到尾遍歷元素,賦值與修改元素簡單。但是陣列必須規定長度。過長浪費空間,過短產生溢位。而且往兩個陣列中間插入數值不方便。 

為了解決這些缺點產生了arraylist:arraylist是命名空間system.collections下的一部分,物件的大小是按照其中儲存的資料來動態擴充與收縮的。所以,在宣告arraylist物件時並不需要指定它的長度。同時可以隨意的新增,修改元素,比陣列方便。

缺點:arraylist中可以插入不同型別的資料。arraylist會把所有插入其中的資料當作為object型別來處理,在我們使用arraylist處理資料時,很可能會報型別不匹配的錯誤,也就是arraylist不是型別安全的。在存放值型別時,都需要將值型別裝箱為object物件,使用集合元素時,還需要執行拆箱操作,帶來很大的效能耗損。

引入list:在例項化時都需要指定其內部項的資料或物件型別,避免了型別安全問題與裝箱拆箱的效能問題。

不同:效能,儲存物件型別。

在c#中陣列,arraylist,list都能夠儲存一組物件。list就像火車,arraylist就像小轎車。list對於裝載的事物有限制,就像火車要麼拉人,要麼拉貨。

arraylist小轎車,想拉什麼就拉什麼,速度比火車慢。 所以我們在程式設計中盡量不用arraylist,因為什麼都放,會導致無法用特定型別接收,取出時需要強轉。 

第三點不同:拆箱和裝箱問題。

arraylist:首先將型別轉換為object,也就是裝箱。然後將object轉換為其所對應的型別,也就是拆箱的操作。

裝箱就是把值型別打包到object引用型別的乙個例項中。比如整型變數i被裝箱並賦值給物件o。

int i =123;

object o=(object) i;

拆箱就是指從物件中提取值型別。如下:物件o拆箱並將其賦值給整型變數i。

o = 123;

i = (int)o;

list:因為泛型中指定了型別所以其不需要進行拆裝箱操作,效率也就相對提公升了。

第四點:list在使用的時候需要匯入的using指令為using system.collections.generic;

arraylist在使用的時候需要匯入的using指令為using system.collections;

第五點:list屬於泛型集合 arraylist屬於非泛型集合。通常情況下,建議使用泛型集合。

C 中泛型效率對比(ArrayList和List)

泛型一般效率比較高,因為它的操作並不是裝箱拆箱,也不涉及object型別轉換。下面的一段程式主要測試泛型列表list與陣列列表araylist之間的效能對比。這兩種都可以建立列表,且都可以面對不同的資料型別。泛型的資料型別程式設計中指定。arraylist型別為object類,會進行資料的裝箱和拆箱...

C 動態陣列ArrayList

在c 中,如果需要陣列的長度和元素的個數隨著程式的執行不斷改變,就可以使用arraylist類,該類是乙個可以動態增減成員的陣列。一 arraylist類的常用屬性和方法 1.arraylist類的常用屬性 2.arraylist類的常用方法 二 arraylist類與array類的區別 array...

C 動態陣列ArrayList介紹

arraylist是一種動態陣列,其容量可隨著我們的需要自動進行擴充.arraylist位於system.collections命名空間中,所以我們在使用時,需要匯入此命名空間.下面,我們還是在student類的基礎上利用arraylist操作,從而了解arraylist的用法 code publi...