c#在元组项中使用.count
本文关键字:count 元组 | 更新日期: 2023-09-27 17:53:25
我试图比较列表内的许多元组的内容。代码运行良好,但在某些情况下,completeList[z].Item1.Count
会返回错误的数字。当我查看调试器时,在一个示例中,当计数为9时,a = completeList[z].Item1.Count
可能返回18。所以这会导致它超出范围。
completeList.Count
返回正确,因为completeList[z].Item1[b]
,所以我不确定我可能做错了completeList[z].Item1.Count
。
谢谢你的建议!
int x = completeList.Count;
int y = 0;
while (y < x)
{
for (int z = 0; z < x; z++)
{
if (y != z && completeList[y].Item6.Equals(completeList[z].Item6))
{
int a = completeList[z].Item1.Count;
a = a -1;
for (int b = 0; b < a; b++)
{
if (completeList[y].Item1.Contains(completeList[z].Item1[b]))
{
completeList[z].Item1.RemoveAt(b);
completeList[z].Item2.RemoveAt(b);
completeList[z].Item3.RemoveAt(b);
completeList[z].Item4.RemoveAt(b);
completeList[z].Item5.RemoveAt(b);
}
}
}
}
y++;
}
您正在从列表中删除项。这将改变计数,并移动现有项的索引。在循环开始时,计数是正确的,但是当您实际删除一个项目时,计数不再有效。
最有效的解决方案是在删除项目时不迭代列表;相反,依赖于列表的RemoveAll
方法来删除与要删除的项目列表匹配的所有项目。虽然可以对索引进行适当的管理,以便在迭代时删除索引,但应该避免这种复杂性。