C# 锯齿状数组未初始化

C# jagged array not initializing

正在尝试制作一个 10 列和 10 行的二维锯齿状数组。当我尝试初始化第一列时,它出现了多个错误,我不确定我做错了什么。

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

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

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

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

这里board是class的一个字段。你也可以让它成为方法内部的局部变量:

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

difference between a class field and a local variable 是字段可以从外部访问,如果它是 public 并且对于静态字段存在 "forever" 并且只要由此 [=32= 制作的对象] 对实例字段有效,而局部变量只能在方法内访问,并且通常只在方法调用持续时有效(不讨论迭代器方法等特殊情况)。

交错数组在两种情况下很有用

  1. 你的结构不是矩形的。
  2. 您希望能够在不使用循环的情况下为其分配整行。

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

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

如果您希望数组有 10 行和 10 列,则最好不要使用锯齿状数组。使用:

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

改为