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.
有人能告诉我我在这里设置错了什么吗?
不良行为的直接原因是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);
}
}
}