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;
}
}
但这使我很难在程序中添加更多形状。
我的初始化程序错了吗?如果我不允许这样做,那么设置它的最简单方法是什么?
答案 0 :(得分: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} }
};
答案 1 :(得分:6)
数组初始值设定项语法({ ... }
)只能用于初始化字段或变量
要在外部数组中创建数组,您需要使用常规数组创建语法。
在内部new []
之前添加{ ... }
以创建隐式类型数组。
由于您正在处理byte
和多维数组,因此您可能需要通过编写new byte[,] { ... }
来明确指定某些类型。