C# Lists : initialize with size, 为什么在 .Add() 之后不能使用 [] 访问?

标签 c# arrays list

这适用于数组:

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/

相关文章:

c# - 保护交付给客户的源代码

c# - 如何将 dropDownlist 映射到 C# 中的枚举?

javascript - setAttribute 的问题

java - 如何从对象列表中删除那些id在另一个JAVA列表中给出的对象?

python:遍历列表并用相应的字典值替换元素

c# - 为 ASP.NET 网站创建 web.sitemap 文件

c# - Xamarin.iOS 中的静音(iOS 版本 >11)

ios - 如何快速使用reduce(into :)

Java Sorting : sort an array of objects by property, 对象不允许使用 Comparable

python - 理解Python中的枚举