为什么我不能显式地将int转换为字符串?

时间:2011-09-06 13:13:36

标签: c# casting

如果我尝试这样做,它就不起作用:

static void Main(string[] args)
{
    int a = 5000;
    Console.WriteLine((string)a);
}

但不知何故,这样可行:

static void Main(string[] args)
{
    int a = 5000;
    Console.WriteLine(a + "");
}

为什么?是因为第一个尝试更改基类型,第二个只是将值附加到字符串?

5 个答案:

答案 0 :(得分:47)

int无法转换为string(1),但有一个运算符+接受int作为左手参数,stringint右手论证(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());