ArrayList就是實現了IList, ICollection, IEnumerable, ICloneable這幾個介面的動態數組。即使.NetFramwork提供了一些更耐用更受歡迎的新的類,ArrayList仍然十分有用。下面是一些在C#中使用ArrayList的執行個體,一起看看其基本用法和一些進階用法。
添加元素
在使用ArrayList的每個程式中基本都會用到其Add方法。該方法追加一個元素對象至ArrayList的末端。在記憶體允許的情況下,你可以持續的向這個集合中添加元素,其元素以堆的形式進行儲存。見下樣本。
ArrayList類中元素的儲存為Object類型,這意味著,ArrayList對象原則上可以接受.NET中的任何值,在儲存或檢索實值型別時通常發生裝箱和拆箱。見下樣本。
將一個ArrayList添加至另一個ArrayList
有多種不同的方法可以將一個ArrayList添加至另一個ArrayList,但是最優的是使用AddRange方法。在.NET Framework內部,AddRange使用Array.Copy或CopyTo方法,相比一些迴圈,能夠有更好的效能表現。如下樣本。
ArrayList的Count屬性和Clear方法
ArrayList類提供了一個虛屬性——Count,當使用Count屬性時,實際上並不是對ArrayList對象中的元素個數予以計算,而是直接返回一個緩衝欄位值,這意味著使用該屬性擷取元素的數量速度非常之快。所以一般在程式中直接擷取其Count屬性予以使用,而不必將該屬性的值取出來儲存在另一個變數中。
ArrayList類的Clear方法用於移除其所有元素。在在.NET Framework內部,它調用了Array.Clear方法。有些時候,相比與清除原ArrayList對象的所有元素,直接建立一個新的ArrayList對象,代碼看起來可能會更整潔一些。
ArrayList的Sort和Reserve方法
可以利用Sort方法對ArrayList或它的一部分元素進行排序,預設是升序排序。前面提到過ArrayList中可以接受不同類型的值,但是如果要使用Sort方法,必須保證進行排序的那部分元素是同一資料類型。換句話說,ArrayList中有不同類型的元素時,仍然可以使用Sort方法對其一部分元素進行排序,但這時必須指定該部分元素的範圍。
Reserve方法的使用方法與Sort類似,用於倒置ArrayList或它的一部分元素的順序。對於ArrayList中不同類型的元素的處理方式同Sort方法。