我开发了一个图像处理软件。
int size = 3;
int[,] kernel = new int[size, size] {
{1, 2, 1},
{2, 4, 2},
{1, 2, 1}
};
编译代码时,size
变量出现编译错误消息“预期值为常量值”。我知道我可以在我的kernel
数组初始化中放3或使size
不变。我问的是这个错误背后的技术原因,因为这个错误对我没有任何意义。
答案 0 :(得分:3)
您可以通过仅指定大小(可以是变量)来创建具有空值的数组,也可以在初始值设定项中列出值,并可选择指定常量大小。但是您无法将初始化程序与非常量大小组合在一起。对于初始化程序,如果要确保初始化程序生成特定大小的数组,则允许指定大小的常量值。
只需删除大小参数,初始化列表已经指定了大小。
答案 1 :(得分:3)
编译器需要数组排名的常量表达式。您可以将size
声明为const int
,或者您可以让编译器从初始化表达式中找出它:
int[,] kernel = new int[,] {
{1, 2, 1},
{2, 4, 2},
{1, 2, 1}
};
答案 2 :(得分:0)
在声明中添加元素,因此您无需指定大小。
所以这会奏效:
int[,] kernel = new int[,] {
{1, 2, 1},
{2, 4, 2},
{1, 2, 1}
};