C# 中数组、ArrayList、List 区别
一:数组
//定义 string[] strs = new string[5]; //赋值 strs[0] = "a"; strs[1] = "b"; //修改 strs[1] = "c"; //取值 string getstr = strs[1];
优点:数组在内存中是连续存储的、所以它的索引速度是非常快的、时间复杂度为o(1)、而且它的赋值/修改/获取元素也是非常简单的。
缺点:1、定义数组的时候需要指定数组的长度(过长会造成内存浪费、过短会导致程序异常system.indexoutofrangeexception:"索引超出数组界限")
2、插入和删除元素效率低、也比较麻烦。
在不清楚数组长度的时候、就很尴尬了。 所以c#提供了arraylist了来处理这些问题...
二:arraylist
使用大小会根据需要动态增加的数组。
//初始化 arraylist list = new arraylist(); //添加元素 list.add(1); list.add("a"); list.add(0.1); //修改元素 list[2] = "b"; //指定索引插入元素 list.insert(1, "abc"); //移除元素 list.removeat(1);
优点:1、arraylist大小会根据需要动态增加的数组。
2、实现了ilist接口、可以方便的对数据进行添加、插入和删除。
缺点:1、arraylist会把插入的数据都当做object类型来存储、在操作数据的时候可能会因为类型不匹配而出现异常、它是非类型安全的对象。
2、由于存储的是object类型、在使用的时候进行类型转换、会造成装箱拆箱、从而损耗性能。
装箱:把值类型转换成引用类型;
拆箱:把引用类型转换成值类型。
//装箱 int i = 1; object obj = (object)i; //拆箱 int j = (int)obj;
由于arraylist存在类型不安全、装箱拆箱损耗性能。.net framework 2.0 推出了list<t>
三:list<t>
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法。
//初始化 list<int> list = new list<int>(); //添加 list.add(12); list.add(34); //编译器会进行类型验证、下面代码编译失败 //list.add("abc"); //修改 list[0] = 1; //移除 list.removeat(0);
优点:由于泛型list是强类型、编译器会验证类型安全。这样就避免了类型的不安全、以及数据强制转换导致装箱拆箱损耗性能。
上一篇: 宁波象山将力推茶产业创新转型发展
下一篇: C#DataGridView的简单使用
推荐阅读
-
【转载】C#中ArrayList集合类和List集合类的比较
-
【转载】C#中ToArray方法将List集合转换为对应的数组
-
C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)
-
【转载】 C#中使用CopyTo方法将List集合元素拷贝到数组Array中
-
C#常见的几种集合 ArrayList,Hashtable,List
,Dictionary 遍历方法对比 -
【转载】 C#中ArrayList使用ToArray方法转换为数组
-
Java中res.add(list)和res.add(new ArrayList<Integer>(list))的区别
-
C#介绍ArrayList和List的区别(第一篇内容博客 )
-
集合(11)——C#中List〈string〉和string[]数组之间的相互转换
-
C# 中的集合(Array/ArrayList/List
/HashTable/Dictionary)