在C#中向字符串添加整数

时间:2012-02-23 18:18:33

标签: c# c#-4.0

最近我被告知可以将整数(和其他类型)连接成字符串,反之亦然,即

// x == "1234"
// y == "7890"
string x = "123" + 4;
string y = 7 + "890";

出于某种原因,我不认为这种事情是允许的,所以我一直在使用(从.NET 2开始)形式:

// x == "1234"
// y == "7890"
string x = "123" + 4.ToString();
string y = 7.ToString() + "890";

其中整数转换为字符串。以前的版本是否始终可用,我错过了它,或者它是C#4的新内容(我现在正在使用它)?

2 个答案:

答案 0 :(得分:19)

这一直存在。如果至少有一个操作数是字符串,则+等同于string.Concat()string.Concat()有一个带有object实例的重载。在内部,它会在连接之前调用对象的ToString()方法。

在C#规范中找到相关部分 - 第7.7.4节“加法运算符:

  

字符串连接

string operator +(string x, string y);
string operator +(string x, object y);
string operator +(object x, string y);
     

binary +运算符在一个或两个时执行字符串连接   操作数是字符串类型。如果字符串连接的操作数是   null,替换空字符串。否则,任何非字符串   通过调用,将参数转换为其字符串表示形式   从类型对象继承的虚拟ToString方法。如果ToString   返回null,替换为空字符串。

答案 1 :(得分:3)

当然,最好的答案是使用某种形式:

String.Format("{0},{1}", "123", 4);