无法将int类型隐式转换为字符串

时间:2012-08-06 09:46:16

标签: c# string

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

我的代码是:

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

为什么会出现此错误?我该如何解决?

2 个答案:

答案 0 :(得分:9)

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

针对您的问题的简单解决方案是使用"$",而不是string,而不是'$',这是char,但这不是常量表达式,所以在你的情况下,它会因新的编译器错误而失败。

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

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

答案 1 :(得分:1)

只需使用String.Concat

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

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

此外,您不能将const关键字与此类表达式一起使用。考虑使用readonly代替。