这个数组初始化不正确吗?

public byte[][,] Shapes = { { {1,1}, {1,1} }, { {1}, {1}, {1}, {1} }, { {0,0,1}, {1,1,1} } }; 

我收到此错误:“数组初始值设定项只能在变量或字段初始化程序中使用。请尝试使用新表达式。”

我能做到这一点……

 public class Shape { public byte[][,] Shapes; public Shape() { Shapes = new byte[3][,]; Shapes[0] = new byte[2, 2]; Shapes[0][0, 0] = 1; Shapes[0][0, 1] = 1; Shapes[0][1, 0] = 1; Shapes[0][1, 1] = 1; Shapes[1] = new byte[1, 4]; Shapes[1][0, 0] = 1; Shapes[1][0, 1] = 1; Shapes[1][0, 2] = 1; Shapes[1][0, 3] = 1; } } 

但这使我很难在程序中添加更多形状。

我的初始化程序错了吗? 如果我不允许这样做,最简单的方法是什么?

这对我有用:

  public byte[][,] Shapes = new byte[3][,] { new byte[,] { {1,1}, {1,1} }, new byte[,] { {1}, {2}, {3}, {4} }, new byte[,] { {0,0,1}, {1,1,1} } }; 

数组初始值设定项语法( { ... } )只能用于初始化字段或变量。
要在外部数组中创建数组,您需要使用常规数组创建语法。

在内部{ ... }之前添加new []以创建隐式类型数组。

由于您正在处理byte和多维数组,因此您可能需要通过编写new byte[,] { ... }来明确指定某些类型。