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