C#中数组、ArrayList和List三者的区别

数组在内存中是连续存储的,因此它的索引速度很是快,并且赋值与修改元素也很简单。数组

string[] s = new string[2];安全

s[0] = "a";性能

s[1] = "b";对象

可是数组存在一些不足的地方。在数组的两个数据间插入数据是很麻烦的,并且在声明数组的时候必须指定数组的长度,数组的长度过长,会形成内存浪费,过段会形成数据溢出的错误。若是在声明数组时咱们不清楚数组的长度,就会变得很麻烦。继承

  ArrayList: 继承Ilist接口,提供了数据存储和检索。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。因此,在声明ArrayList对象时并不须要指定它的长度。索引

ArrayList list = new ArrayList();接口

//新增内存

list.Add("ad");字符串

list.Add(123); string

//修改数据

list[1] = 2;
//插入数据

list.Insert(0,"sfsd");

从上面的例子看,不只插入了字符串,并且插入了数字,这样在ArrayList中插入不一样类型是容许的。由于ArrayList会把全部插入其中的数据当作object类型处理。

极可能会报类型不匹配的错误,也就是ArrayList不是类型安全的。在存储或检索类型时一般发生装箱和拆箱的操做,带来很大的性能问题。

由于ArrayList存在类型不安全的特色,因此出现了泛型的概念。List是ArrayList类的泛型等效类,用法与ArrayList相似,由于List也继承IList接口。最大的区别是:

在声明List集合时,咱们同时须要为List集合声明数据类型:

List<string> list = new List<string>();

//新增数据

list.Add("asd");

//修改数据

list[0] = "qwe";

相关文章
相关标签/搜索