List <T>如何在内部映射?

Sun*_*pta 5 .net arrays generics clr list

它在内部被视为一个数组还是被CLR视为完全不同的类型?

我试图将整数值实现到列表中.

List<int> lst = new List<int>();
lst.Add(3);
lst.Add(4);
Run Code Online (Sandbox Code Playgroud)

我创建了一个整数数组

int[] arr = new int[2];
arr[0] = 3;
arr[1] = 4;
Run Code Online (Sandbox Code Playgroud)

Array返回更好的时间跨度结果.那么为什么人们更喜欢List <>.

Luc*_*ero 5

List<>是数据结构的实现,它负责按需分配内存; 它允许在任何索引等处插入和删除.因此它比简单的数组更方便.

在引擎盖下,当前List<>实现使用数组进行存储,并且在进行类似数组操作时的开销很小.增加的便利性通常值得一点(如果相关的话)性能差异.添加项通常更快,因为列表分配内存块并且不需要在每次添加时进行新的分配和复制(与纯数组相比,其中Length始终绑定到内存中的大小).

  • 当然.List <T>是对数组的抽象,抽象会占用额外的CPU周期.然而,我同意Lucero的看法,在正常情况下,List足够快. (2认同)
  • "响应时间"通常是无关紧要的,在(快速且廉价的)边界检查之后,请求被传递到底层数组.这可能甚至由运行时内联,因此它甚至不需要额外的调用. (2认同)