C#锯齿状数组未初始化

时间:2018-10-03 16:01:13

标签: c# arrays initializing

试图制作一个二维锯齿状数组,该数组具有10列和10行。当我尝试初始化第一列时,它会出现多个错误,并且我不确定自己在做什么错。

class Program
{
    int[][] board = new int[10][];
    board[0] = new int[5];
    ...
}

2 个答案:

答案 0 :(得分:3)

您必须将任何不是声明的代码放入方法中

class Program
{
    static int[][] board = new int[10][];

    static void Main()
    {
        board[0] = new int[10];
        ...
    }
}

board是该类的一个字段。您也可以将其设为方法内的局部变量:

class Program
{
    static void Main()
    {
        int[][] board = new int[10][];
        board[0] = new int[10];
        ...
    }
}

difference between a class field and a local variable是,如果该字段是公共字段并且对于静态字段“永久”存在,并且可以使用此类的对象作为实例字段使用,则可以从外部访问该字段,而可以使用局部变量仅在方法内访问,并且通常仅在方法调用持续的时间内存在(而不是在讨论诸如迭代器方法之类的特殊情况)。

锯齿状阵列在两种情况下很有用

  1. 您的结构不是矩形的。
  2. 您希望能够不使用循环将其分配给整行。

否则,我将使用可以立即初始化的二维数组

int[,] board = new int[10, 10];

答案 1 :(得分:1)

如果希望数组具有10行和10列,则不应该使用锯齿状的数组。使用:

int[,] board = new int[10, 10];

代替