C#IndexOutOfRange数组异常

Tin*_*log 3 c# arrays

我正在尝试创建一个2D字符数组来保存字符网格,这些字符将用作2D控制台游戏的一种"地图".

我得到一个:

IndexOutOfRange异常

..并不明白为什么.我已经在调试模式中完成了代码,仍然无法看到问题.

它逐步完成代码直到它命中,X = 25并且Y = 1我的网格的右上边界.

我有_gameWidth_gameHeight创建如下的主要外但仍在类中:

static int _gameWidth = 25;
static int _gameHeight = 15;
Run Code Online (Sandbox Code Playgroud)

以下是在尝试生成和填充网格时失败的代码.它在这一点上失败了:

else if (x == _gameWidth && y == 1)
    _grid[x, y] = '?';



static void GenerateGrid()
{
    for (int y = 1; y <= _gameHeight; y++)
    {
        for (int x = 1; x <= _gameWidth; x++)
        {
            if (x == 1 && y == 1)
                _grid[x, y] = '?';
            else if (x == _gameWidth && y == _gameHeight)
                _grid[x, y] = '?';
            else if (x == _gameWidth && y == 1)
                _grid[x, y] = '?';
            else if (x == 1 && y == _gameHeight)
                _grid[x, y] = '?';
            else if ((x != 1 && y == _gameHeight) || (x != _gameWidth && y == 1))
                _grid[x, y] = '?';
            else if ((x == 1 && y > 1 && y < _gameHeight) || (x == _gameWidth && y > 1 && y < _gameHeight))
                _grid[x, y] = '?';
            else
                _grid[x, y] = 'x';

        }
        Console.WriteLine("");
    }
}
Run Code Online (Sandbox Code Playgroud)

Sop*_*yne 5

更改

for (int i = 1; i <= gameHeight; i++)
Run Code Online (Sandbox Code Playgroud)

for (int i = 0; i < gameHeight; i++)
Run Code Online (Sandbox Code Playgroud)

并为宽度做同样的事情.

编辑:这是因为数组索引从数字0开始,结束时数组的长度减去1.