当我尝试使用+
运算符连接两个字符时,编译器显示以下错误消息:“无法将类型int
隐式转换为string
。”
我的代码是:
const string Expr = ('$' + (char)(39));
为什么会出现此错误?我该如何解决?
答案 0 :(得分:9)
在两个字符上使用+
运算符不会连接它们。相反,它会将它们转换为int
,并添加这些整数,从而产生int
。
针对您的问题的简单解决方案是使用"$"
,而不是string
,而不是'$'
,这是char
,但这不是常量表达式,所以在你的情况下,它会因新的编译器错误而失败。
或者您可以完全跳过整数步骤,只需使用const string Expr = "$'"
。或者,如果您真的想使用整数代码点,可以将其转换为十六进制并使用“$ \ u0027”。
在某些类似情况下,常见的解决方法是首先与空字符串""
连接("" + a + b
)。或者您可以在一个(或两个)操作数上手动调用ToString()
。但在你的情况下,将$
- 前缀转换为字符串更清晰。
答案 1 :(得分:1)
只需使用String.Concat
:
string.Concat('$', (char)39)
字符串上的+运算符无论如何都在内部转换为该方法。
此外,您不能将const
关键字与此类表达式一起使用。考虑使用readonly
代替。