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方法。