1
field = new int[input.Width][][];

for (int x = 0; x < input.Width; x++)
{
       field[x] = new int[input.Height][];

       for (int y = 0; y < 3; y++)
       {
           field[x][y] = new int[3];
       }
}

出于某种原因,上面的代码给了我超出范围的异常,但以下工作正常:

field = new int[input.Width][][];

for (int x = 0; x < input.Width; x++)
{
       field[x] = new int[input.Height][];

}

for (int y = 0; y < input.Height; y++)
{

       for (int x = 0; x < input.Width; x++)
       {
            field[x][y] = new int[3];                   

            field[x][y][0] = random.Next(0, output.Width);
            field[x][y][1] = random.Next(0, output.Height);
            field[x][y][2] = MaskFunctions.DSCALE;

        }
 }

谁能指出我做错了什么?

另外:超出范围和超出范围的异常有区别吗?

4

1 回答 1

4

您的内部循环从0to 开始3,而不是0to input.Height。这将在input.Height < 3.

您可能打算这样做:

field = new int[input.Width][][];

for (int x = 0; x < input.Width; x++)
{
       field[x] = new int[input.Height][];

       for (int y = 0; y < input.Height; y++)
       {
           field[x][y] = new int[3];
       }
}
于 2013-10-10T23:20:26.510 回答