我正在遍历一个List<List<Shape>>
对象并检查水平和垂直相邻的对象是否相同:
for (int x = 0; x < grid.Columns.Count; x++)
{
for (int y = 0; y < grid.Columns[x].Count; y++)
{
if (y != grid.Columns[x].Count - 1)
{
if (grid.Columns[x][y].Column == grid.Columns[x][y + 1].Column)
{
if (!shapesToDestroy.Contains(grid.Columns[x][y]))
{
shapesToDestroy.Add(grid.Columns[x][y]);
}
if (!shapesToDestroy.Contains(grid.Columns[x][y + 1]))
{
shapesToDestroy.Add(grid.Columns[x][y + 1]);
}
}
}
if (x != grid.Columns.Count - 1)
{
if (grid.Columns[x][y].Column == grid.Columns[x + 1][y].Column)
{
if (!shapesToDestroy.Contains(grid.Columns[x][y]))
{
shapesToDestroy.Add(grid.Columns[x][y]);
}
if (!shapesToDestroy.Contains(grid.Columns[x + 1][y]))
{
shapesToDestroy.Add(grid.Columns[x + 1][y]);
}
}
}
}
}
ArgumentOutOfRange
然而,我似乎总是得到一个
if (grid.Columns[x][y].Column == grid.Columns[x][y + 1].Column)
和
if (grid.Columns[x][y].Column == grid.Columns[x + 1][y].Column)
在索引这些之前,我正在执行检查,如您所见,以确保我没有得到 a ArgumentOutOfRange
,但我在这里。当我查看正在出现的索引时+ 1
,它似乎远低于集合的大小。
任何人都可以看到明显的错误以及我要去哪里严重错误吗?
更新 我通过将 X 和 Y 的检查更改为:
if (x < grid.Columns.Count - 1)
和
if (y < grid.Columns[x].Count - 1)
我仍然得到同样的错误。
仅供参考- 集合的大小始终相同。大小为:X = 5 和 Y = 10