我正在尝试创建一个2D数组来存储一些不会像这样改变的值。
const int[,] hiveIndices = new int[,] {
{200,362},{250,370},{213,410} ,
{400,330} , {380,282} , {437, 295} ,
{325, 405} , {379,413} ,{343,453} ,
{450,382},{510,395},{468,430} ,
{585,330} , {645,340} , {603,375}
};
但是在编译时我得到了这个错误
hiveIndices is of type 'int[*,*]'.
A const field of a reference type other than string can only be initialized with null.
如果我更改const to static
,则会进行编译。我不明白添加const量词应该如何引发这种行为。
答案 0 :(得分:43)
实际上你正试图制作数组 - 这是一种引用类型 - const
- 这根本不会影响其值的可变性(你仍然可以改变数组中的任何值) - 使数组readonly
使其编译,但也没有预期的效果。必须在编译时对常量表达式进行全面计算,因此不允许使用new运算符。
您可能正在寻找ReadOnlyCollection<T>
有关详情,请参阅相应的Compiler Error CS0134:
一个常量表达式是一个可以完全评估的表达式 编译时间。因为只能创建一个非null值的方法 reference-type是应用new运算符,因为new 运算符不允许在常量表达式中,唯一可能的 除了string之外的引用类型的常量的值为null。