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

作者&投稿:苍才 (若有异议请与网页底部的电邮联系)
C#中数组,ArrayList和List三者的区别~

数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List的容量可根据需要自动扩充、修改、删除或插入数据。



数组可以具有多个维度,而 ArrayList或 List 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于 ArrayList的性能。 这是因为 ArrayList的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List 的性能与同类型的数组十分相近。

在决定使用 List 还是使用ArrayList 类(两者具有类似的功能)时,记住List 类在大多数情况下执行得更好并且是类型安全的。如果对List 类的类型T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型T使用值类型,则需要考虑实现和装箱问题。

详解可查看http://blog.csdn.net/zhang_xinxiu/article/details/8657431

希望能够帮到你。

数组,简单的集合类型,定义时需要设置长度,一般用来存储字符串和数字。
ArrayList,数组列表,和普通数组的功能差不多,但是它的长度是可变的,在定义时不需要指定数组长度。
List,列表,一般和List泛型搭配使用,用来存储复杂的集合类型 List,也可以用来存储基础的字符串和数字,它的长度也是不固定的。

数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素很简单
ArrayList是.Net Framework提供的用于数据存储和检索的专用类,它是命名空间System.Collections下的一部分。它的大小是按照其中存储的数据来动态扩充与收缩的。所以,我们在声明ArrayList对象时并不需要指定它的长度。ArrayList继承了IList接口,所以它可以很方便的进行数据的添加,插入和移除.
在list中,我们不仅插入了字符串"abc",而且又插入了数字123。这样在ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据都当作为object类型来处理。这样,在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误,也就是说ArrayList不是类型安全的。既使我们保证在插入数据的时候都很小心,都有插入了同一类型的数据,但在使用的时候,我们也需要将它们转化为对应的原类型来处理。这就存在了装箱与拆箱的操作,会带来很大的性能损耗。
装箱与拆箱的概念: 简单的来讲: 装箱:就是将值类型的数据打包到引用类型的实例中


青原区17866296156: c#中数组,array,arraylist三者的区别是什么 -
羊岩葡萄: c#数组就是array,array就是数组 数组定义时要写明类型,是字符串还是整形,arraylist就不用,他可以存放任何类型的变量 数组的大小在初始化时就已经决定无法改变,arraylist是可以增加和减少,使用更灵活,操作更简单.就像一楼说的,效率会低一些.如果能够确定要存放的类型和个数的话建议使用数组,否则使用arraylist.希望能够帮到你.

青原区17866296156: C#中数组,ArrayList和List三者的区别 -
羊岩葡萄: 1、相同点: Array,ArrayList,List都是从IList派生出来的,它们都实现了IEnumerable接口.2、不同点:Array是抽象类不能被实例化,所有数组的定义都从它派生而来.ArrayList是动态数组,可以自由伸缩数组的大小.实质上Array抽象类也提供了Resize方法动态改变数组的大小.List是集合类型,并且是一个支持泛型的集合类型.

青原区17866296156: 在C#中LIST、ArrayList、hashtable三种有什么区别?
羊岩葡萄: C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 1.数组是固定大小的,不能伸缩.虽然System.Array.Resize这个泛型方法可以重置数组大小, 但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化.随后以前的...

青原区17866296156: C#.Net 中ArrayList 与 Array的区别? -
羊岩葡萄: ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能.例如: Array 的容量是固定的,而 ArrayList 的容量是根据需要自动扩展的.如果更改了 ArrayList.Capacity 属性的值,则自动进行内...

青原区17866296156: C# 中 ArrayList 和IList有什么区别? -
羊岩葡萄: ArrayList是IList的一个具体实现,是用数组(Array)来作为底层的数据结构实现的list的各项操作

青原区17866296156: C# 怎么把ArrayList数组进行循环? -
羊岩葡萄: 你做一个主程序,嵌套如下程序:ArrayList l = new ArrayList(); l.Add(1); l.Add(2); //添加测试数据 int a = 0; for (int i = 0; i { a=(int)l[i]; //遍历,并且赋值给了a }1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的...

青原区17866296156: C#中Array和ArrayList的区别?谁可以告诉我?谢谢~~~
羊岩葡萄: Array是定长的数组..也就是说 长度是固定的 ArrayList 长度是可变的.. 能用数组的时候就尽量不要用 集合

青原区17866296156: c#语言中ArrayList 属性的用法及其作用?本人新手要详细点的 -
羊岩葡萄: ArrayList al=new ArrayList();//实例化al.add("xxx");//添加值al.remove("xxx");//删除al.removeat(0);...

青原区17866296156: Array和ArrayList的异同点 -
羊岩葡萄: Array和ArrayList的异同点 一、Array和ArrayList的区别 #1. Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而ArrayList可以只是先声明. 如: int[] array = new array[3]; 或 int[] array = {1,2,3}; 或 ArrayList myList = ...

青原区17866296156: C#中Collection,List和ArrayList的区别 -
羊岩葡萄: 集合中Collection是属于单列集合的根接口,List和set属于Collection的子接口,list集合中存储的是有序的且可重复的元素,set存储的是无序且不可重复元素,而其中ArrayList是list接口的常用子类,他的底层数据结构是数组,并且线程不同步.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网