这适用于数组:
int[] a = new int[10];
for (int i = 0; i < 10; i++)
{
a[i] = i;
}
但这会抛出一个带有列表的 ArgumentOutOfRangeException:
List<int> a = new List<int>(10);
for (int i = 0; i < 10; i++)
{
a[i] = i;
}
这是为什么呢?我认为列表在内部使用数组。
最佳答案
您正在初始化容量,而不是大小。计数仍将为零。当您在创建列表时知道最大大小时,初始化容量允许优化内部数据结构(数组)的大小。这会使内部数组保持已知大小,并防止在添加已知数量的元素时调整内部数组的大小。
关于C# Lists : initialize with size, 为什么在 .Add() 之后不能使用 [] 访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4738900/