按索引设置对象列表时,索引超出范围错误?

时间:2016-11-20 18:17:09

标签: c#

我遇到了更复杂模型的错误,但它是List对象的行为:

List<int> numbers= new List<int>();
numbers[0] = 12; //The error occurs here
Console.WriteLine(numbers[0]);

错误是:

  

指数超出范围。必须是非负数且小于   集合。

修改

我知道Add()Insert(),但我想知道为什么会发生这种奇怪的错误。

3 个答案:

答案 0 :(得分:2)

您正在尝试访问不存在的索引(0),因为您正在初始化空List。你应该调用Add()方法。

List<int> numbers= new List<int>();
numbers.Add(12);
Console.WriteLine(numbers[0]);

答案 1 :(得分:1)

您需要在Add上调用List方法,如下所示:

numbers.Add(12)

如果您需要使用索引进行访问,则需要填充列表,然后您可以使用numbers[0]来检索第一个元素。

初始化列表:

List<int> numbers = new List<int>
{
    12,
    15,
    18
};

现在,numbers[1]将返回15。

答案 2 :(得分:1)

创建新列表时&lt;&gt;对象,它没有任何值,因此没有索引。

这就是为什么在尝试访问列表中的第0个项时遇到错误的原因(如果您了解Java,则会出现IndexOutOfBoundsException)。

使用列表中的Add方法将新项目放入其中,而不是尝试通过索引进行设置。

numbers.Add(12)

此方法将给定值附加到列表的末尾,并为其创建适当的索引。