C#数据结构——List

本文详细介绍了C#中的List数据结构,包括基本概念、Count和Capacity属性、不同构造方法、常用API如Add、Remove和Clear,以及特别提醒,强调了List在存储值类型和引用类型时的行为差异和性能考虑。
摘要由CSDN通过智能技术生成

目录

基本概念

基本属性

Count

Capacity

构造List

无参构造

一参构造(int)

一参构造 (Array)

拷贝构造

其他

常用API

Add(T)

AddRange(Predicate)

Remove()

Clear()

其他API

特别提醒


基本概念

        List类是ArrayList类的泛型版本,相较于自由的ArrayList,List需要在定义时提前指定其内部元素的数据类型,但相对的,List相较于ArrayList在使用其内部元素时也不需要进行装箱、拆箱等操作,在存储元素为值类型的情况下List会有更为优秀的性能表现。

        与ArrayList相同,当使用List.Add()向List当中置入数据时,若List空间不足,则List会自动扩容,因此使用List不必担心像数组一样出现空间不足的情况。

        但与数组相似的是,当使用索引对List元素进行访问时,即:List[index],可能会像数组一样出现越界问题,而List的范围则是[0,List.Count),即访问索引必须大于等于0并小于List.Count。

基本属性

Count

       上文说到,List的范围是[0,Count),即访问索引必须大于等于0并小于Count,因此Count也可视作List内部元素的数量

Capacity

        List.Capacity是List的实际容量,这个容量对于同一个List只会扩张不会缩小,当使用了List.Remove()等操作时只会缩小Count,对Capacity不会产生影响;这意味着对于同一个List对象,即便是移除了内部元素,List的实际占用空间也不会缩小,但如果List内部元素是引用类型,则会删除其引用。

        同时,如果引发了List的扩容,则Capacity会扩张到原来的两倍,但并不是直接扩张原来的空间大小,而是申请一片新的内存空间,并将原有元素拷贝到新空间当中,因此扩容因造成一定的性能消耗。

构造List

无参构造

        这是最基本的List构造方法,但大多数情况下推荐使用其他方法优化性能

List<int> _list_None = new List<int>();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值