オブジェクトをループして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)
これらにインデックスを付ける前に、ご覧のとおり、 が取得されていないことを確認するためにチェックを実行していますがArgumentOutOfRange
、ここにあります。されているインデックスを見ると+ 1
、コレクションのサイズを大きく下回っているように見えます。
明らかな間違いと、私がひどく間違っているところを誰かが見ることができますか?
更新 X と Y のチェックを次のように変更して、コードを更新しました。
if (x < grid.Columns.Count - 1)
と
if (y < grid.Columns[x].Count - 1)
それでも同じエラーが発生します。
参考までに - コレクションのサイズは常に同じです。サイズ: X = 5、Y = 10