1

当我尝试使用+运算符连接两个字符时,编译器显示以下错误消息:“无法将类型隐式转换intstring。”

我的代码是:

const string Expr = ('$' + (char)(39));

为什么我会收到此错误?我该如何解决?

4

2 回答 2

9

在两个字符上使用+运算符不会连接它们。相反,它将它们转换为int,并添加这些整数,从而产生int.

解决您的问题的一个简单方法是使用"$", 这是 a string,而不是'$', 这是 a char,但这不是常量表达式,因此在您的情况下,它会因新的编译器错误而失败。

或者您可以完全跳过整数步骤,只使用const string Expr = "$'". 或者,如果您真的想使用整数代码点,可以将其转换为十六进制并使用“$\u0027”。

在某些类似情况下,常见的解决方法是先连接空字符串""( "" + a + b)。或者您可以手动调用ToString()一个(或两个)操作数。但是在您的情况下,将$-prefix 转换为字符串会更干净。

于 2012-08-06T09:48:35.893 回答
1

只需使用String.Concat

string.Concat('$', (char)39)

无论如何,字符串上的 + 运算符都会在内部转换为该方法。

此外,您不能将const关键字与这样的表达式一起使用。考虑readonly改用。

于 2012-08-06T09:50:51.663 回答