为什么不能将常量字符串分配给常量字符串类型?

时间:2013-02-26 20:06:47

标签: c# string

据我所知,"H" + 'i'的连接产生一个常量字符串 我还是C#错了?

代码:

const string b = "H" + 'i';
// Error : The expression being assigned to 'b' must be constant

这是否算作错误或功能?

2 个答案:

答案 0 :(得分:7)

这是一个微妙的。

'i'是一个 char 字面值 将它添加到字符串涉及一个装箱转换(调用string operator +(string x, object y),如规范中所指定的),这不是一个常量表达式。

有关详细信息,请参阅我的earlier answer

答案 1 :(得分:0)

也许VS2010错误有助于定义它:

Constant initializer must be compile-time constant

所以“H”+'i'是运行时值。