当列表索引是变量时抛出异常

本文关键字:抛出异常 变量 列表 索引 | 更新日期: 2023-09-27 18:16:31

我有一个包含自定义类元素的列表。我想把元素的一个属性赋值给一个变量。

下面的代码可以工作:

string myVar = list[0].MyType.MyStringProperty;

但是我想对列表的其余部分重复这个过程,所以我打算使用循环。然而,这段代码不起作用,因为它抛出了一个argumentoutorange异常:

for(int i=0; i<=list.Count; i++)
    {
        myVar = list[i].MyType.MyStringProperty;
    }

如何解决这个问题?

编辑:异常在循环的第一次执行时抛出,在最后一行。在调试期间,列表中的元素似乎没有问题。它们都具有所需的带值的字符串类型属性(除了null)。这是可能的,它与行有关,但是我使用完全相同的方法在其他地方的代码中添加新行,它工作得很好(这些数据不是从列表中获取的)。

    private void MyMethod(List<MyType> list)
    {
        for (int i = 1; i < list.Count; i++)
        {
            DataRow newrow = datatable.NewRow();
            newrow["Column"] = list[i].MyStringProperty;
        }
    }

当列表索引是变量时抛出异常

你的代码中有一个off -by- 1错误。

改变
for(int i=0; i <= list.Count; i++)// <=

 for(int i=0; i < list.Count; i++)// Note <= is changed to <

您的条件是i<=list.Count,这意味着当i等于list.Count时将执行for循环,在这种情况下,您将得到异常,因为List<T>是基于零的