Array和ArrayList的異同點
一、Array和ArrayList的區別
#1. Array型別的變數在宣告的同時必須進行例項化(至少得初始化陣列的大小),而ArrayList可以只是先宣告。
如:
int[] array = new array[3];
或 int[] array = {1,2,3};
或 ArrayList myList = new ArrayList();
這些都是合法的,而直接使用 int[] array;是不行的。
#2. Array只能儲存同構的物件,而ArrayList可以儲存異構的物件。
同構的物件是指型別相同的物件,若宣告為int[]的陣列就只能存放整形資料,string[]只能存放字元型資料,但宣告為object[]的陣列除外。
而ArrayList可以存放任何不同型別的資料(因為它裡面存放的都是被裝箱了的Object型物件,實際上ArrayList內部就是使用"object[] _items;"這樣一個私有欄位來封裝物件的)
#3 在CLR託管對中的存放方式
Array是始終是連續存放的,而ArrayList的存放不一定連續。
#4 初始化大小
Array物件的初始化必須只定指定大小,且建立後的陣列大小是固定的,而ArrayList的大小可以動態指定,其大小可以在初始化時指定,也可以不指定,也就是說該物件的空間可以任意增加。
#5 Array不能夠隨意新增和刪除其中的項,而ArrayList可以在任意位置插入和刪除項。
二、Array和ArrayList的相似點
#1 都具有索引(index),即可以透過index來直接獲取和修改任意項。
#2 他們所建立的物件都放在託管堆中。
#3 都能夠對自身進行列舉(因為都實現了IEnumerable介面)。
注:
在C#2.0中,建議大家儘量使用範型版的ArrayList,即System.Collection.Generics名稱空間下的List<T>,這樣不但保證了型別安全,而且由於沒有了裝箱和拆箱的過程,從而提高了物件處理的效率。
Array和ArrayList的異同點
一、Array和ArrayList的區別
#1. Array型別的變數在宣告的同時必須進行例項化(至少得初始化陣列的大小),而ArrayList可以只是先宣告。
如:
int[] array = new array[3];
或 int[] array = {1,2,3};
或 ArrayList myList = new ArrayList();
這些都是合法的,而直接使用 int[] array;是不行的。
#2. Array只能儲存同構的物件,而ArrayList可以儲存異構的物件。
同構的物件是指型別相同的物件,若宣告為int[]的陣列就只能存放整形資料,string[]只能存放字元型資料,但宣告為object[]的陣列除外。
而ArrayList可以存放任何不同型別的資料(因為它裡面存放的都是被裝箱了的Object型物件,實際上ArrayList內部就是使用"object[] _items;"這樣一個私有欄位來封裝物件的)
#3 在CLR託管對中的存放方式
Array是始終是連續存放的,而ArrayList的存放不一定連續。
#4 初始化大小
Array物件的初始化必須只定指定大小,且建立後的陣列大小是固定的,而ArrayList的大小可以動態指定,其大小可以在初始化時指定,也可以不指定,也就是說該物件的空間可以任意增加。
#5 Array不能夠隨意新增和刪除其中的項,而ArrayList可以在任意位置插入和刪除項。
二、Array和ArrayList的相似點
#1 都具有索引(index),即可以透過index來直接獲取和修改任意項。
#2 他們所建立的物件都放在託管堆中。
#3 都能夠對自身進行列舉(因為都實現了IEnumerable介面)。
注:
在C#2.0中,建議大家儘量使用範型版的ArrayList,即System.Collection.Generics名稱空間下的List<T>,這樣不但保證了型別安全,而且由於沒有了裝箱和拆箱的過程,從而提高了物件處理的效率。