C#:List与数组区别,什么时候用哪个

2023-08-24 15:19:44 浏览数 (1)

数组优缺点:

  1. 数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单。整个数组是以首地址开头的一块连续的内存单元。如有字符数组char c[10]。设数组c的首地址为2000,也就是说c[0]单元地址为2000。则数组名c就代表这个首地址。
  2. 天然支持多维数组
  3. 数组也存在一些不足的地方。比如在数组的两个数据间插入数据也是很麻烦的,还有我们在声明数组的时候,必须同时指明数组的长度,数组的长度过长,会造成内存浪费,数组和长度过短,会造成数据溢出的错误。这样如果在声明数组时我们并不清楚数组的长度,就变的很麻烦了

List优缺点:

  1. 数组可以多维,list原本一维。
  2. 通过允许指定泛型类或方法操作的特定类型,泛型功能将类型安全的任务从您转移给了编译器。不需要编写代码来检测数据类型是否正确,因为会在编译时强制使用正确的数据类型。减少了类型强制转换的需要和运行时错误的可能性。泛型提供了类型安全但没有增加多个实现的开销。
  3. 有挺多封装好的函数
  4. List内部维护着一个数组_items,用来存放T类型的元素。→当有新的T类型元素存放进来,即调用Add(T item)方法。→Add(T item)方法内部调用EnsureCapacity(int min)方法确保List的Capaicty属性值至少在原先长度上加1。→在给Capacity赋值的过程中,对_items的长度进行了扩容。→扩容后,再把新的T类型元素存放进来。 当有新的元素存放到List中时,List先对其维护的内部数组进行扩容,然后再把新元素放进来。

什么时候用哪个

数组长度固定,List未限定长度,且支持的功能更多,最常用的List底层实际上也是使用数组实现。不需要复杂功能和确定长度的情况下,使用数组效率更高,通常情况建议使用List。 例如:地图数据用数组,天然支持二维 actors 用list,可以对靠近玩家中心的actors进行排序,存储

0 人点赞