C#中数组、ArrayList和List<T>三者的发展历程

         在C#中数组,ArrayList,List使我们用的最多的类型之一。他们共同的作用都是能够存储一组对象。

那么问题来了:

(1)为什么要有三个一样作用的东西呢?他们都很完美吗?

(2)谁先出生,又是因为什么原因另外两者出现了呢?

(3)三者分别适用于那些场合?

 

 

数组

    数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。

但是数组存在一些不足的地方。在数组的两个数据间插入数据是很麻烦的,而且在声明数组的时候必须指定数组

的长度,数组的长度过长,会造成内存浪费,过段会造成数据溢出的错误。如果在声明数组时我们不清楚数组的

长度,就会变得很麻烦。

    针对数组的这些缺点,C#中最先提供了ArrayList对象来克服这些缺点。

ArrayList

    ArrayList是命名空间System.Collections下的一部分,在使用该类时必须进行引用,同时继承了IList接口,

提供了数据存储和检索。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。所以,在声明

ArrayList对象时并不需要指定它的长度。

List<T>

    ArrayList是命名空间System.Collections.generic下的类,好像是解决了数组中所有的缺点,为什么又会

有List?

   因为ArrayList会把所有插入其中的数据当作为object类型来处理,在我们使用ArrayList处理数据时,很可

会报类型不匹配的错误,也就是ArrayList不是类型安全的。在存储或检索值类型时通常发生装箱和取消装箱

操作,带来很大的性能耗损。

   又因为ArrayList存在不安全类型与装箱拆箱的缺点,所以出现了泛型的概念。List类是ArrayList类的泛型

效类,它的大部分用法都与ArrayList相似,因为List类也继承了IList接口。最关键的区别在于,在声明List

合时,我们同时需要为其声明List集合内数据的对象类型。

 

 

也就是说,改进的历程是这样的:

    改进流程:数组->Arraylist->List

 

posted @ 2015-01-05 15:00  wssxr  阅读(235)  评论(0)    收藏  举报