据我所知,"H" + 'i'
的连接产生一个常量字符串。
我或C#错了吗?为什么不能将常量字符串分配给常量字符串类型?
代码:
const string b = "H" + 'i';
// Error : The expression being assigned to 'b' must be constant
这是否算作一个错误或功能?
据我所知,"H" + 'i'
的连接产生一个常量字符串。
我或C#错了吗?为什么不能将常量字符串分配给常量字符串类型?
代码:
const string b = "H" + 'i';
// Error : The expression being assigned to 'b' must be constant
这是否算作一个错误或功能?
这是一个微妙之处。
'i'
是char字面值。
将其添加到字符串涉及装箱转换(要按规范中的规定,请致电string operator +(string x, object y)
),它不是一个常量表达式。请参阅我的earlier answer。
也许VS2010错误将帮助定义它:
Constant initializer must be compile-time constant
因此 “H” + 'i' 是一个运行值。
这并不能解释为什么。 '“H”+“i”'很好。 – SLaks 2013-02-26 20:09:34
@SLaks,真的,我喜欢你的“早期答案”,它对此进行了深入的解释。 – 2013-02-26 20:11:50
您不会添加两个字符串,而是一个字符串和一个字符。 – ChrisF 2013-02-26 20:07:42
char不是一个字符串,因此它不是一个常量。这将工作:'const string b =“H”+“ i”;' – 2013-02-26 20:08:05