Array和ArrayList的區別

來源:互聯網
上載者:User

Array和ArrayList的區別
1. Array類型的變數在聲明的同時必須進行執行個體化(至少得初始化數組的大小),而ArrayList可以只是先聲明。
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介面)。

ArrayList的一些特性

ArrayList的capacity屬性值會隨ArrayList中的項的實際大小來發生改變

通過ArrayList類的TrimToResize()方法可以將ArrayList執行個體中的空項去除以壓縮體積。
在C#2.0中,建議大家盡量使用範型版的ArrayList,即System.Collection.Generics命名空間下的List<T>,
這樣不但保證了型別安全,而且由於沒有了裝箱和拆箱的過程,從而提高了對象處理的效率。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.