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= 制作的对象] 对实例字段有效,而局部变量只能在方法内访问,并且通常只在方法调用持续时有效(不讨论迭代器方法等特殊情况)。
交错数组在两种情况下很有用
- 你的结构不是矩形的。
- 您希望能够在不使用循环的情况下为其分配整行。
否则我会使用您可以立即初始化的二维数组
int[,] board = new int[10, 10];
如果您希望数组有 10 行和 10 列,则最好不要使用锯齿状数组。使用:
int[,] board = new int[10, 10];
改为
正在尝试制作一个 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= 制作的对象] 对实例字段有效,而局部变量只能在方法内访问,并且通常只在方法调用持续时有效(不讨论迭代器方法等特殊情况)。
交错数组在两种情况下很有用
- 你的结构不是矩形的。
- 您希望能够在不使用循环的情况下为其分配整行。
否则我会使用您可以立即初始化的二维数组
int[,] board = new int[10, 10];
如果您希望数组有 10 行和 10 列,则最好不要使用锯齿状数组。使用:
int[,] board = new int[10, 10];
改为