在数组中获取枚举元素

时间:2012-10-31 14:30:42

标签: c# for-loop enums foreach minesweeper

我需要弄清楚如何在数组中的枚举上获取元素。 基本上,我有一个9x9按钮网格。我有两个包含这些值的多维数组。一个人的名字(如果名字是43),它意味着5个向下,4个跨越(因为它们从0开始)。该名称也与数组中的ELEMENT相同。

string[,] playingField = new string[9, 9];
enum CellType { Empty, Flag, Hidden, Bomb }
CellType[,] cells = new CellType[9, 9];

按钮的名称保存在playingField中 每个细胞的状态都保存在细胞中(如果它是空的,有炸弹等)

感谢AbdElRaheim提供上述内容。我这样做的原因是我可以获得一个按钮名称(与元素名称完全相同),这两个数组在两个数组中都是相同的。
例如:我可以这样做:

string dim1 = Convert.ToString(btn.Name[0]);
string dim2 = Convert.ToString(btn.Name[1]);
if (cells[Convert.ToInt32(dim1), Convert.ToInt32(dim2)] == CellType.Bomb)

(请原谅我可怕的转换。我稍后会解决这个问题;))以及上面所做的是它让我看看你点击的单元格下是否有炸弹。

然而,我现在需要做的,基本上与此相反。在上面我知道我要与之比较的元素名称,因为元素名称与按钮名称相同。但是,现在我需要做什么通过获取Bombcells的所有元素的元素来查找元素名称(按钮名称)。

我不知道该怎么做,我试过了:

foreach (CellType Bomb in cells)
{

但它没有做任何事情。我需要在'cells'中找到所有'bomb'并返回元素名称。这样我就可以使用该元素名称,将其转换为字符串,并使用我的StringToButton方法创建对该按钮的引用。

这是我目前正在进行的方式,供参考,并帮助您更好地理解,但请注意这不是我想继续这样做的方式。我想按照上面提到的方式做到这一点:)

foreach (string i in minedNodes)
{
    Button buttonName = StringToButton(Convert.ToString(i));
    buttonName.Image = new Bitmap(dir + "mine.png");
}

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您正在寻找一种遍历单元格数组的方法,那么您可以这样做:

int oi, ii;
for (oi = 0; oi <= cells.GetUpperBound(0); ++oi)
{
    for (ii = 0; ii <= cells.GetUpperBound(1); ++ii)
    {
        System.Diagnostics.Debug.WriteLine(
            "Checking: " + oi + "," + ii + " : " + cells[oi, ii].ToString()
        );
    }
}

然后,您可以保存对符合您所需值的单元格[oi,ii]内容的引用列表。