代码之家  ›  专栏  ›  技术社区  ›  jakev

'索引超出了数组的边界。'

c#
  •  0
  • jakev  · 技术社区  · 6 年前

    我有一个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 回复  |  直到 6 年前
        1
  •  4
  •   gunnerone    6 年前

    通过循环:

    第一:XY=2

    第二:XY=1

    第三:XY=0

    第四: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];
    }