初始化数组时,预计会有一个常量值

时间:2010-08-29 10:12:21

标签: c#

我开发了一个图像处理软件。

int size = 3;

int[,] kernel = new int[size, size] {
        {1, 2, 1},
        {2, 4, 2},
        {1, 2, 1}
};

编译代码时,size变量出现编译错误消息“预期值为常量值”。我知道我可以在我的kernel数组初始化中放3或使size不变。我问的是这个错误背后的技术原因,因为这个错误对我没有任何意义。

3 个答案:

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