这适用于数组:
int[] a = new int[10];
for (int i = 0; i < 10; i++)
{
a[i] = i;
}
Run Code Online (Sandbox Code Playgroud)
但是这会抛出带有列表的ArgumentOutOfRangeException:
List<int> a = new List<int>(10);
for (int i = 0; i < 10; i++)
{
a[i] = i;
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?我以为列表在内部使用了数组.
Tim*_*oyd 21
您正在初始化容量,而不是大小.计数仍为零.初始化容量允许在创建列表时知道最大大小时优化内部数据结构(数组)的大小.这使内部数组保持已知大小,并在添加已知数量的元素时防止内部数组重新调整大小.