它是否在内部得到处理数组或是否得到视为一个完全不同的类型由CLR?
我想实现整数值到列表中。
List<int> lst = new List<int>();
lst.Add(3);
lst.Add(4);
与
我创建了一个整数数组
int[] arr = new int[2];
arr[0] = 3;
arr[1] = 4;
Array返回更好的时间跨度结果。 那么,为什么人们宁愿名单<>。
它是否在内部得到处理数组或是否得到视为一个完全不同的类型由CLR?
我想实现整数值到列表中。
List<int> lst = new List<int>();
lst.Add(3);
lst.Add(4);
与
我创建了一个整数数组
int[] arr = new int[2];
arr[0] = 3;
arr[1] = 4;
Array返回更好的时间跨度结果。 那么,为什么人们宁愿名单<>。
List<>
是一种数据结构,其负责在按需的基础上分配存储器的实现; 它允许插入和删除在任何索引等。因此它是比简单的阵列方便得多。
引擎盖下,当前List<>
实现使用用于存储的阵列,并且这样做阵列状的操作当所述开销最小。 更加方便,通常是值得的一点(如果在所有相关的)的性能差异。 添加项目通常更快,因为列表分配的内存块,并且不需要新的分配并复制每个插件(相对于纯数组,其中Length
总是必然的大小在内存中)。
一个正常的随机接入列表通常具有一个内部数组。 在.NET List<T>
实现这一点。 其它实施方式中诸如LinkedList<T>
使用具有引用,而不是阵列元件的链。 更奇特的名单可以在内部使用的树木进行排序。
在内部数组List<T>
被初始化具有短长度(4相信),并且如果试图在阵列的最大边界之外添加,它已展开。 由于这可能是耗时(阵列需要复制),当添加第五元件内部数组大小调整为长度8等的阵列大一倍,即得。