Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#IndexOutfrange数组异常_C#_Arrays - Fatal编程技术网

C#IndexOutfrange数组异常

C#IndexOutfrange数组异常,c#,arrays,C#,Arrays,我正在尝试创建一个2D字符数组来保存一个字符网格,它将被用作2D控制台游戏的一种“地图” 我得到一个: 索引自动失效例外 …也不明白为什么。我已经在调试模式下逐步完成了代码,但仍然看不到问题所在 它会一步一步地遍历代码,直到它到达我的网格的右上边界X=25和Y=1 我创建了\u gameWidth和\u gameHeight如下,在main之外,但仍然在类内部: static int _gameWidth = 25; static int _gameHeight = 15; 以下是尝试生成和填

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

我得到一个:

索引自动失效例外

…也不明白为什么。我已经在调试模式下逐步完成了代码,但仍然看不到问题所在

它会一步一步地遍历代码,直到它到达我的网格的右上边界
X=25
Y=1

我创建了
\u gameWidth
\u gameHeight
如下,在main之外,但仍然在类内部:

static int _gameWidth = 25;
static int _gameHeight = 15;
以下是尝试生成和填充网格时失败的代码。在这一点上它失败了:

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("");
    }
}
else if(x==\u gameWidth&&y==1)
_网格[x,y]='╕';
静态void GenerateGrid()
{
用于(整型y=1;y 1和y<\u游戏高度))
_网格[x,y]='│';
其他的
_网格[x,y]=“x';
}
控制台。写线(“”);
}
}
更改

for (int i = 1; i <= gameHeight; i++)

for(int i=1;i此异常表示您访问了无效的索引。从您编写循环的方式,我可以看出您认为索引从1到数组的长度。不过,数组是基于零的。请使用标准循环形式:

for (int i = 0; i < length; i++)
for(int i=0;i
循环从1开始。您可以使用Visual Studio
for
循环模板。只需键入
“for”


您的程序可能会从代码复查堆栈交换站点中受益。

我们错过了网格[,]问题解决的声明。感谢您的快速回复。我很高兴,尽管选择了另一个作为正确答案,但此答案的投票率更高:p
for (int i = 0; i < length; i++)