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

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

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

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

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

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

这一直存在。 如果至少有一个操作数是字符串,则+等同于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,则替换空字符串。 否则,通过调用从类型对象inheritance的虚拟ToString方法,将任何非字符串参数转换为其字符串表示forms。 如果ToString返回null,则替换空字符串。

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

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