'索引超出了数组的范围。'

时间:2018-06-07 17:58:43

标签: c#

我有一个3X3数组byte[,] grid = new byte[3,3];并且访问它在我的程序中运行正常但是当我尝试通过循环找到横向行的总数时我得到一个错误'索引超出了界限数组。'。我知道这意味着什么,但我不明白我为什么会这样做。

        total = 0;
        for (byte xy = 2; xy >= 0; xy-=1) {
            total += grid[xy, xy]; //this is were i get the error
        }

1 个答案:

答案 0 :(得分:4)

完成循环:

1st:xy = 2

第二名:xy = 1

第3名:xy = 0

第4名:xy = 255

0 - 1 = 255,因为你的循环变量xy是一个字节,它不能表示负值,只有0到255.

要修复循环,您可以将xy更改为int。这样它可以表示负值,允许条件xy> = 0返回false并退出循环。

for (int xy = 2; xy >= 0; xy-=1) {
    total += grid[xy, xy];
}