我创建了一个列表,然后对于此列表的每个成员,还有另一个子列表。目的是在子列表中的条件下保存一些数字。 这是我的代码:
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);
}
}
}
其中array_2.Count
和array_2.Count
是整数。
但我有一个错误说:
Index was out of range. Must be non-negative and less than the size of the collection.
有谁能告诉我我在这里设置错误了吗?
答案 0 :(得分:4)
嗯,不良行为的直接原因是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);
答案 1 :(得分:1)
谢谢。以下是我发现的正确答案:
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);
}
}
}