C#中数组、ArrayList和List<T>三者的发展历程

本文深入探讨了C#中数组、ArrayList与List三种数据结构的特点、优缺点及适用场景,揭示了它们的发展历程与相互关系。重点阐述了数组的快速索引和简单赋值特性,ArrayList的动态扩容与类型限制,以及List类如何通过泛型解决类型安全问题。通过对比分析,清晰地展示了不同数据结构在实际应用中的选择依据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         在C#中数组,ArrayList,List使我们用的最多的类型之一。他们共同的作用都是能够存储一组对象。

那么问题来了:

(1)为什么要有三个一样作用的东西呢?他们都很完美吗?

(2)谁先出生,又是因为什么原因另外两者出现了呢?

(3)三者分别适用于那些场合?

 

 

数组

    数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。

但是数组存在一些不足的地方。在数组的两个数据间插入数据是很麻烦的,而且在声明数组的时候必须指定数组

的长度,数组的长度过长,会造成内存浪费,过段会造成数据溢出的错误。如果在声明数组时我们不清楚数组的

长度,就会变得很麻烦。

    针对数组的这些缺点,C#中最先提供了ArrayList对象来克服这些缺点。

ArrayList

    ArrayList是命名空间System.Collections下的一部分,在使用该类时必须进行引用,同时继承了IList接口,

提供了数据存储和检索。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。所以,在声明

ArrayList对象时并不需要指定它的长度。

List<T>

    ArrayList是命名空间System.Collections.generic下的类,好像是解决了数组中所有的缺点,为什么又会

有List?

   因为ArrayList会把所有插入其中的数据当作为object类型来处理,在我们使用ArrayList处理数据时,很可

会报类型不匹配的错误,也就是ArrayList不是类型安全的。在存储或检索值类型时通常发生装箱和取消装箱

操作,带来很大的性能耗损。

   又因为ArrayList存在不安全类型与装箱拆箱的缺点,所以出现了泛型的概念。List类是ArrayList类的泛型

效类,它的大部分用法都与ArrayList相似,因为List类也继承了IList接口。最关键的区别在于,在声明List

合时,我们同时需要为其声明List集合内数据的对象类型。

 

 

也就是说,改进的历程是这样的:

    改进流程:数组->Arraylist->List

 

转载于:https://www.cnblogs.com/wssxr/p/wssxr.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值