C#中列表的子列表出错

本文关键字:列表 出错 | 更新日期: 2023-09-27 18:26:26

我创建了一个列表,然后对于这个列表的每个成员都有另一个子列表。其目的是在子列表中的某个条件下保存一些数字。这是我的代码:

List<Tuple<int, List<int>>>list_1= new list_1<List<Tuple<int, List<int>>>();
for (int i = 0; i < array_1.Length ; i++)
{
    for (int j = array_2.Length - 1; j > -1; j--)
    {
        if (j > i + 1)
        {
            list_1[i].Item2.Add(j);                    
        }
    }
}

其中CCD_ 1和CCD_。

但我有一个错误,上面写着:

Index was out of range. Must be non-negative and less than the size of the collection.

有人能告诉我我在这里设置错了什么吗?

C#中列表的子列表出错

不良行为的直接原因是list_1没有项目(空):

  List<Tuple<int, List<int>>> list_1= new list_1<Tuple<int, List<int>>>();

所以第一次尝试读取任何项目

  list_1[i]

将抛出超出范围的异常。您必须显式地将项目添加到列表中(与Python不同):

  list_1.Add(new Tuple<int, int>(...));

编辑:预计会出现这样的情况:

  // Add items
  //TODO: what Item1 should be?
  while (i >= list_1.Count)
    list_1.Add(new Tuple<int, List<int>>(0, new List<int>())); //TODO: Item1 = 0?
  // Now it's safe to address list_1[i]:
  list_1[i].Item2.Add(j); 

感谢。以下是我发现的正确信息:

List<Tuple<int, List<int>>> list_1= new list_1<Tuple<int, List<int>>>();
for (int i = 0; i < 3; i++)
{
    list_1.Add(new Tuple<int, List<int>>(i, new List<int>()));
    for (int j = 5; j >= 0; j--)
    {
        if (j > i + 1)
        {
           list_1[i].Item2.Add(j); 
        }
    }
}