其中哪些将达到正确的结果:
(1)
int X = 23;
string str = "HELLO" + X.ToString() + "WORLD";
(2)
int X = 23;
string str = "HELLO" + X + "WORLD";
(3)
int X = 23;
string str = "HELLO" + (string)X + "WORLD";
编辑:“正确”结果是str
评估为:HELLO23WORLD
答案 0 :(得分:7)
int X = 23;
string str = string.Format("HELLO{0}WORLD", X);
答案 1 :(得分:4)
选项3无法编译,因为您无法将int
强制转换为string
。
另外两个产生相同的结果。但是,有一个微妙的区别。
在内部,加号运算符编译为对String.Concat
的调用。 Concat
有不同的重载。选项1调用Concat(string, string, string)
,而选项2调用Concat(object, object, object)
两个字符串和一个盒装int。在内部Concat
然后在盒装int上调用ToString
。
另外,请检查此相关问题:Strings and ints, implicit and explicit
答案 2 :(得分:1)
你也可以使用StringBuilder:
System.Text.StringBuilder str = new System.Text.StringBuilder();
str.Append("HELLO");
str.Append(X);
str.Append("World");