概述
数组:数组有很多的优点,比如说数组在内存中是连续存储的,所以它的索引速度是非常的快,
而且元素的赋值与修改也很简单
数组实例代码如下:
//声明一个int类型并且大小为10的数组,声明数组时必须指明数组的类型与大小。
int[] StrArray = new int[10];
赋值:用for循环为数组的每个元素赋值
for (int i=0;i<StrArray.Length;i++) {
StrArray[i] = i;
}
修改:用for循环修改数组每个元素的值
for (int i = 0; i < StrArray.Length; i++)
{
StrArray[i] = i+i;
}
数组总结:
优点:索引速度快,元素的赋值与修改简单
缺点:声明数组时必须指明数组的类型与大小。数组的长度过长,会造成内存浪费;数组的长度过短,会造成内存溢出。所以在声明数组时如果我们并不清楚数组的长度,就会变的很棘手了
因为数组分配在一块连续的内存空间上,因此数组必须确定大小内存管理系统才能为其分配空间。
空间的连续,也导致了存储效率低,插入和删除元素效率比较低,而且麻烦。
如果要增添一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。
同样,你想删除一个元素,需要移动大量元素去填补被移动的元素。
针对于数组的这些缺点,C#中最先提供了ArrayList对象来克服这些缺点。
ArrayList:ArrayList是.Net Framework提供的用于数据存储和检索的专用类,
它是命名空间System.Collections下的一部分。
它的大小是按照其中存储的数据来动态扩充与收缩的。所以,我们在声明ArrayList对象时并不需要指定它的长度。
ArrayList继承了IList接口,所以它可以很方便的进行数据的添加,插入和移除。
ArrayList实例代码如下:
ArrayList arrayList = new ArrayList();//声明一个ArrayList,无须指明类型与大小。
//赋值:ArrayList中允许存储不同类型的数据
arrayList.Add("abc");
arrayList.Add(123);
//修改:
arrayList[0] ="EFG";
arrayList[1] = 456;
//移除数据
arrayList.RemoveAt(0);//移除arrayList中索引为0的元素
//插入数据
arrayList.Insert(0,99);//在索引为0处插入数据99
ArrayList总结:
优点:在声明ArrayList对象时并不需要指定它的类型与大小,它的大小是按照其中存储的数据来动态扩充与收缩的
缺点:ArrayList不是类型安全的,ArrayList中允许存储不同类型的数据,因为ArrayList会把所有的数据都当作为object类型来处理,
所以在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误,也就是说ArrayList不是类型安全的。
即使我们保证在插入数据的时候都很小心,都插入了同一类型的数据,但在使用的时候,我们也需要将它们转化为对应的原类型来处理。这就存在了装箱与拆箱的操作,会带来很大的性能损耗。
ArrayList好像是解决了数组中所有的缺点,但它出现了一种数组没有的缺点:类型不安全,性能损耗大。所以在C#2.0后出现了泛型List
List的大部分用法都与ArrayList相似,因为List类也继承了IList接口
List的实例代码如下:
List<int> list = new List<int>();//声明List,无须指明大小,但要指明类型。
//新增数据
list.Add(123);
list.Add(456);
//修改数据
list[0] = 135;
list[1] = 246;
//移除数据
list.RemoveAt(0);
List总结:
优点:List解决了类型安全问题与装箱拆箱的性能损耗大的缺点
缺点:声明时须指定类型
最后
以上就是动听饼干为你收集整理的C#数组、ArrayList、list详解的全部内容,希望文章能够帮你解决C#数组、ArrayList、list详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复