C#:List与数组区别以及各自适用场

文章对比了数组和List<T>的数据结构特性。数组在内存中连续存储,索引速度快,适合固定长度的同类型数据存储,但插入操作不便且长度不可变。List<T>支持动态扩容,使用泛型提供类型安全,功能更丰富,适用于长度不确定的情况。在性能和灵活性之间,应根据实际需求选择使用数组或List<T>。
摘要由CSDN通过智能技术生成

1.数组优缺点:

1.数组在内存中是连续存储的,所以它的索引速度是非常的,而且赋值与修改元素也很简单。整个数组是以首地址开头的一块连续的内存单元。如有字符数组char c[10]。设数组c的首地址为2000,也就是说c[0]单元地址为2000。则数组名c就代表这个首地址。

2.天然支持多维数组

3.数组也存在一些不足的地方。比如在数组的两个数据间插入数据很麻烦的,还有我们在声明数组的时候,必须同时指明数组的长度,数组的长度过长,会造成内存浪费,数组和长度过短,会造成数据溢出的错误。这样如果在声明数组时我们并不清楚数组的长度,就变的很麻烦了

2.List优缺点:

数组可以多维,list原本一维。

通过允许指定泛型类或方法操作的特定类型,泛型功能将类型安全的任务从您转移给了编译器。不需要编写代码来检测数据类型是否正确,因为会在编译时强制使用正确的数据类型。减少了类型强制转换的需要和运行时错误的可能性。泛型提供了类型安全但没有增加多个实现的开销。

有挺多封装好的函数

List内部维护着一个数组_items,用来存放T类型的元素。→当有新的T类型元素存放进来,即调用Add(T item)方法。→Add(T item)方法内部调用EnsureCapacity(int min)方法确保List的Capaicty属性值至少在原先长度上加1。→在给Capacity赋值的过程中,对_items的长度进行了扩容。→扩容后,再把新的T类型元素存放进来。

当有新的元素存放到List中时,List先对其维护的内部数组进行扩容,然后再把新元素放进来。

3.各自适用场景

数组长度固定,List未限定长度,且支持的功能更多,最常用的List底层实际上也是使用数组实现。不需要复杂功能和确定长度的情况下,使用数组效率更高,通常情况建议使用List。

例如:地图数据用数组,天然支持二维

小结:

数组Arr:--存储同类型数据,索引以及读写速度快,但是不支持特定类型数据,且声明需要指定长度

List:允许指定泛型类T类型参数或方法操作的特定类型,list声明不需要指定长度,入参相比于数组比较灵活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值