如果我尝试这样做,它就不起作用:
static void Main(string[] args)
{
int a = 5000;
Console.WriteLine((string)a);
}
但不知何故,这样可行:
static void Main(string[] args)
{
int a = 5000;
Console.WriteLine(a + "");
}
为什么?是因为第一个尝试更改基类型,第二个只是将值附加到字符串?
答案 0 :(得分:47)
int
无法转换为string
(1),但有一个运算符+
接受int
作为左手参数,string
为int
右手论证(2)。此运算符将string
转换为string
并连接两个Console.WriteLine(a);
。
更好的方法可能就是使用a.ToString()
为您调用{{1}}。
答案 1 :(得分:7)
所以你得到一个编译时错误吧?问题是int没有明确地转换为字符串。
所以
(string)a
不是有效代码,但
a + ""
意味着代码将起作用,因为它基本上被翻译为
a.ToString() + ""
因此int被转换为字符串值
答案 2 :(得分:5)
您应该使用:
static void Main(string[] args)
{
int a = 5000;
Console.WriteLine(a);
}
隐式调用a.ToString()
答案 3 :(得分:1)
要在字符串中强制转换int,必须使用int32.parse(string)
这是不对的,Int32的parse方法返回一个整数,该整数从字符串中解析。
要获取另一种数据类型的字符串表示,只需使用Object Class中的.ToString()。 或者您使用System.Convert.ToString()
答案 4 :(得分:0)
这不起作用,因为您已将一个纯粹的integer
值分配给a,您无法通过隐式转换将其转换为string
,但其效果如下
static void Main(string[] args)
{
int a = 5000;
Console.WriteLine(a);
}
等于Console.WriteLine(a.ToString());