Esta boot de matriz está incorreta?

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

Eu recebo este erro: “inicializadores de matriz só podem ser usados ​​em uma variável ou campo inicializador. Tente usar uma nova expressão em vez disso.”

Eu poderia fazer isso …

 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; } } 

Mas isso torna muito difícil adicionar mais formas ao meu programa.

Meu inicializador está errado? E se eu não puder fazer isso dessa maneira, qual é a maneira mais fácil de definir isso?

Isso funciona para mim:

  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} } }; 

A syntax do inicializador de matriz ( { ... } ) só pode ser usada para inicializar um campo ou variável.
Para criar matrizes dentro da matriz externa, você precisa usar a syntax de criação de matriz normal.

Adicione new [] antes do { ... } interno para criar uma matriz com tipos implícitos.

Como você está lidando com matrizes de byte e multidimensionais, pode ser necessário especificar explicitamente alguns dos tipos, escrevendo um new byte[,] { ... } .