【问题标题】:How do I initialize my array without my entry being null?如何在我的条目不为空的情况下初始化我的数组?
【发布时间】:2021-08-14 10:41:24
【问题描述】:

我现在正在构建一个小型扫雷程序。我用一个由细胞组成的二维阵列来启动比赛场地。当我启动这个数组时,所有条目都是空的。如何正确启动它?

    public Cell[,] _playField;

...

    public void GeneratePlayField(PlayField playField)
    {
        _playField = new Cell[XSize, YSize];
        foreach (Cell cell in playField._playField)
        {
            if (playField._random.NextDouble() <= playField.FillAmount)
            {
                cell.IsMine = true;
            }
        }
    }

...

internal class Cell
{
    public int Neighbors;
    public bool IsMine;

    public Cell(int neighbors, bool isMine)
    {
        Neighbors = neighbors;
        IsMine = isMine;
    }
}

【问题讨论】:

  • 作为附加信息,我已经尝试使用 foreach 循环设置数组中的所有单元格,但这不起作用。我也知道这似乎是一个简单的问题,我可以用谷歌搜索,但我真的没有找到任何答案,这就是我在这里问的原因。

标签: c# arrays minesweeper


【解决方案1】:

多维数组有点棘手。您可以使用 2 个 for 循环和 GetLength(dimension) 来初始化它们:

int YSize = 30, XSize = 10;

Cell[,] numbers = new Cell[YSize, XSize];
for (int row = 0; row < numbers.GetLength(0); row++)
    for (int col = 0; row < numbers.GetLength(1); row++)
        numbers[row, col] = new Cell();

通常使用 [row,col](而不是 [col,row]),因此一行的元素在内存中是连续的。

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 2021-07-07
    • 2011-05-30
    • 1970-01-01
    • 2012-07-12
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多