当我尝试使用+运算符连接两个字符时,编译器显示以下错误消息:“无法将类型隐式转换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改用。