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

来源:互联网 发布:你的名字发绳淘宝 编辑:程序博客网 时间:2024/04/27 22:52

数组:string[] a=new string[2]

a[0]="1";

a[1]="3"

从上可看出数组在内存中连续存储,索引速度比较快,赋值和修改比较简单。

缺点:数组大小不明确容易造成浪费和超出索引内存溢出。


arraylist

大小不需要指明,对象的大小是按照其中存储的数据来动态扩充与收缩的
ArrayList list1 = new ArrayList();
//新增数据
list1.Add("cde");
list1.Add(5678);
//修改数据
list[2] = 34;
//移除数据
list.RemoveAt(0);
//插入数据
list.Insert(0, "qwe");
由上可见,

arraylist的插入要简单得多

缺点:它不是类型安全的,在存储或检索数据时会引发装箱和拆箱操作,性能消耗。
数组临界点的扩容是相当消耗性能的。

list
List<string> list = new List<string>();
//新增数据
list.Add(“abc”);
//修改数据
list[0] = “def”;
//移除数据
list.RemoveAt(0);

array和arraylist的区别?
           1. Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而ArrayList可以只是先声明
            int[] arr = new int[3]{1,2,3};
            int[] arr2 = new int[3];
            ArrayList myList = new ArrayList();
           2.Array只能存储同构的对象,而ArrayList可以存储异构的对象
           3.在CLR托管堆中的存放方式 Array是始终是连续存放的,而ArrayList的存放不一定连续
           4. Array对象的初始化必须只定指定大小,且创建后的数组大小是固定的,而ArrayList的大小可以动态指定,其大小可以在初始化时指定,也可以不指定,
              也就是说该对象的空间可以任意增加
            5 Array不能够随意添加和删除其中的项,而ArrayList可以在任意位置插入和删除项
           相同点1.两者都可以枚举2.两者都可以通过index得到或修改对应值3.他们创建的对象都在托管堆中

建议:
基于效率和类型安全,使用array
无法确定数组大小,使用arraylist

list和arraylist的区别?
list是一个接口,arraylist是一个类,arraylist继承并实现了list。
所以list不能被构造List list=new List();    //   是错误的用法

泛型的出现解决了arraylist中类型不安全和装箱拆箱引起的性能消耗问题。
























0 0
原创粉丝点击