如何轻松获取二维数组中的上一个(和下一个)项? 我知道你可以使用:
进行迭代 for (byte x = 0; x < grid.GetLength(0); x++)
{
for (byte y = 0; y < grid.GetLength(1); y++)
{
//Here I should get previous item if certain bool returns false
}
}
我可以做y--
。但是,如果y
是x
行中的第一个元素,该怎么办?然后是y = (getLength(1) -1)
和x--
。这看起来有点复杂:s
由于我的数组包含自定义类型“Field”的元素,因此我尝试使用以下代码创建previousField属性:
Field previousField = null;
foreach (Field field in this.Grid)
{
field.PreviousField = previousField;
previousField = field;
}
但是,这不适用于'for'循环迭代。因为我现在以2种完全不同的方式迭代&gt;&lt;。我不知道如何创建一个nexField属性。
那么,如何创建nextField属性?如果不可能,我如何在数组中前后迭代?我需要一个数组,因为我需要在代码的其他部分使用索引。
编辑:示例;
我正在使用回溯算法制作数独游戏。 2D数组表示网格(例如9x9)。所以我遍历数组,插入随机数字(利用乐观,'这应该没问题,否则,我们会回去改变)。
插入数字时,我会验证数字是否正确(在块,行和列中是唯一的)。我尝试所有可能的数字(1-9)。如果没有正确的数字,那么我可能在前一个单元格中出错(所以我回溯)。如果那里没有有效数字,则再次转到上一个字段。如果找到有效数字,那么我再次转到下一个数字。
答案 0 :(得分:3)
如果您只需要此迭代的前一个字段,则可以在循环中跟踪它。像这样:
Field previous = null;
for (byte x = 0; x < grid.GetLength(0); x++)
{
for (byte y = 0; y < grid.GetLength(1); y++)
{
//Here I should get previous item if certain bool returns false
// ....
previous = grid[x,y];
}
}