黑马程序员技术交流社区

标题: C#数组与集合的的区别 [打印本页]

作者: 醉红尘_碎星辰    时间: 2013-11-5 17:41
标题: C#数组与集合的的区别
数组与集合的区别
作者: 张小康    时间: 2013-11-5 17:49
数组在声明的时候已经确定了类型和长度
集合的中可以放任何类型的数据,长度可变
泛型集合可以指定数据的类型
作者: 何俞平    时间: 2013-11-5 20:23
本帖最后由 何俞平 于 2013-11-5 20:27 编辑

数组在声明的时候已经确定了类型和长度
集合中可以放任何类型的数据,长度可变
泛型集合为指定类型的集合,现已接触到的有:List<T>集合(指定元素类型)和Dictionary<Tkey,Tvalue>集合(指定元素的键的类型和值的类型。
现有数组,由于数组的类型和长度在声明时就确定了,无法修改,为了解决这两个问题,就有了ArrayList和键值对集合。而这两个也有两个问题:很容易发生拆箱和装箱过程,影响程序运行速度;集合的元素的类型非单一时,去数据麻烦,为了解决集合的这两个问题,人们就限定集合元素的类型,这种限定了元素类型的集合就是泛型集合。现使用的集合为泛型集合。
作者: 许庭洲    时间: 2013-11-5 20:38
1. 数组是一组类型相同的有序数据;
2. 数组按照数组名,数组元素的类型和维数来进行描述;
3. 比如声明一个整数数组: int[] arr;
4. 集合表示一组相同或相似的数据项总的描述。
作者: 凤凰涅槃    时间: 2013-11-5 21:12
这里有一篇很不错的文章,希望对你有帮助吧。
http://blog.csdn.net/smartmz/article/details/7105087
作者: 有你珍贵    时间: 2013-11-5 23:33
数组的长度是固定的。不可变的。而集合的长度可以根据元素的增加而增加。
数组只能存一种类型,集合可以存多种类型
作者: dashanren    时间: 2013-11-6 20:14
数组与集合的区别:
一:数组声明了它容纳的元素的类型,而集合不声明。这是由于集合以object形式来存储它们的元素。
二:一个数组实例具有固定的大小,不能伸缩。集合则可根据需要动态改变大小。
三:数组是一种可读/可写数据结构没有办法创建一个只读数组。然而可以使用集合提供的ReadOnly方   只读方式来使用集合。该方法将返回一个集合的只读版本。
泛型与集合的区别
泛型听起来很高深的一个词,但实际上它的作用很简单,就是提高c#程序的性能。
比如在计算机中经常用到一些数据结构,如队列,链表等,而其中的元素以前一般这么定义:object a=new object();
这样就带来一个严重的问题,用object来表示元素没有逻辑问题,但每次拆箱、封箱就占用了大量的计算机资源,导致程序性能低下,而这部分内容恰恰一般都是程序的核心部分,如果使用object,那么程序的表现就比较糟糕。
而使用泛型则很好的解决这个问题,本质就是在编译阶段就告诉编译器,数据结构中元素的种类,既然编译器知道了元素的种类,自然就避免了拆箱、封箱的操作,从而显著提高c#程序的性能。
比如List<string>就直接使用string对象作为List的元素,而避免使用object对象带来的封箱、拆箱操作,从而提高程序性能。
可以自己编个小例子体验一下在使用数据结构时的情形,自然就理解了。
作者: 黑飞马    时间: 2013-11-6 21:05
1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的

2.数组要声明元素的类型,集合类的元素类型却是object.

3.数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。

4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!

5.数组可以有维数,集合没有。
作者: linuxcc    时间: 2013-11-6 22:57
数组: 类型和长度在声明中已经固定         --->所以对于添加或删除某个元素比较困难
集合:可以放任何类型的数据,长度可变    --->类型为任意的因此存在一个类型安全,集合的话他有装箱和拆箱 因此 性能降低
泛型集合: 可以指定数据的类型     --->他继承了数组和集合的优点  可指定类型 长度可变 可增可减 ,同时去除拆箱和装箱 使性能提高
作者: 陈福军    时间: 2013-11-6 23:32
问题已解决,请改为已解决,方便加分,黑马因你而精彩




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2