最近我被告知可以将整数(和其他类型)连接成字符串,反之亦然,即
// 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的新内容(我现在正在使用它)?
答案 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);