文章评分
次,平均分 :
ArrayList
即动态数组。用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。
ArrayList在使用时会引发装箱和拆箱操作,看下面的一段代码:首先声明了一个ArrayList对象,并向ArrayList中添加两个数字1,2,然后使用foreach将ArrayList中的元素打印到控制台。
1 2 3 4 5 6 7 |
var array = new ArrayList(); array.Add(1); array.Add(2); foreach (int value in aray) { Console.WriteLine(“value is {0}”,value); } |
在这个过程中会发生两次装箱操作和两次拆箱操作:在向ArrayList中添加int类型元素时会发生装箱,在使用foreach枚举ArrayList中的int类型元素时会发生拆箱操作,将object类型转换成int类型,在执行到Console.WriteLine时,还会执行两次的装箱操作;这一段代码执行了6次的装箱和拆箱操作;如果ArrayList的元素个数很多,执行装箱拆箱的操作会更多。
List<T>
List<T>表示可通过索引访问对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法。
List<T>与ArrayList的显著差异在于,List<T>只会在Console.WriteLine()方法时执行2次装箱操作,不需要拆箱操作。
请看如下代码:
1 2 3 4 5 6 7 |
var list = new List;(); list.Add(1); list.Add(2); foreach (int value in list) { Console.WriteLine("value is {0}", value); } |
综上所述,泛型可以避免装箱拆箱带来的不必要的性能消耗。当然泛型的好处不止于此,泛型还可以增加程序的可读性,使程序更容易被复用等等。
除特别注明外,本站所有文章均为交通人原创,转载请注明出处来自http://www.hijtr.com/csharp-list-arraylist/
暂无评论