这个数组初始化不正确吗?
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[,] { ... }
来明确指定某些类型。