如果我尝试这样做它不起作用:
static void Main(string[] args)
{
int a = 5000;
Console.WriteLine((string)a);
}
Run Code Online (Sandbox Code Playgroud)
但不知何故,这工作正常:
static void Main(string[] args)
{
int a = 5000;
Console.WriteLine(a + "");
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?是因为第一个尝试更改基类型,第二个只是将值附加到字符串?
lar*_*moa 47
int不能转换为string(1),但有一个运算符+接受int左手参数和string右手参数(2).该运算符转换为intto string并连接两个strings.
一种更好的方法可能就是使用Console.WriteLine(a);哪种方法a.ToString().
所以你得到一个编译时错误吧?问题是int没有显式地转换为字符串.
所以
(string)a
Run Code Online (Sandbox Code Playgroud)
不是有效的代码但是
a + ""
Run Code Online (Sandbox Code Playgroud)
意味着代码将起作用,因为它基本上被翻译成
a.ToString() + ""
Run Code Online (Sandbox Code Playgroud)
所以int被转换为字符串值
你应该使用:
static void Main(string[] args)
{
int a = 5000;
Console.WriteLine(a);
}
Run Code Online (Sandbox Code Playgroud)
隐含地调用 a.ToString()