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

Kai*_*ije 8 .net c#

public byte[][,] Shapes = 
    {
        {
            {1,1}, 
            {1,1}
        }, 
        {
            {1}, 
            {1}, 
            {1}, 
            {1}
        },
        {
            {0,0,1},
            {1,1,1}
        }
    };
Run Code Online (Sandbox Code Playgroud)

我收到此错误:"数组初始化程序只能在变量或字段初始化程序中使用.请尝试使用新表达式."

我能做到这一点......

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但这使我很难为我的程序添加更多形状.

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

Che*_*eso 9

这对我有用:

  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} }
    };
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 6

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

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

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