使用它的好处是什么:
Console.WriteLine("{0}: {1}", e.Code, e.Reason);
VS。这样:
Console.WriteLine(e.Code + ": " + e.Reason);
????
答案 0 :(得分:4)
我总是使用.Format()的原因是可读性,因此减少了bug和维护的好处。当然,如果你对代码比较陌生,这是没有意义的,因为第二个例子起初更直观。第一个似乎是不必要的复杂。
但是如果选择第二种模式,那么当你有很多变量时就会出现问题。这是更容易理解第一种模式的好处的地方。
e.g
Console.Writeline(var1 + " " + var2 + "-" + var3 +
" some sort of additional text" + var4);
请注意错误:我需要在“text”之后再生一个空格,但在本例中并不容易看到。
但是,如果我以另一种方式这样做:
Console.Writeline("{0} {1}-{2} some sort of additional text{3}",
var1, var2, var3, var4)
更清楚地看到发生了什么。当您从将要使用的变量中分离格式时,更容易理解最终结果。
如果我们想进一步考虑更长远,那么它有助于全球化/定制化。如果我们将这些格式字符串放入config中,我们就可以在不触及代码的情况下更改变量的格式或顺序。
答案 1 :(得分:3)
对我而言,string.Format
吊坠的好处是:
从表现的角度来看,我从未做过任何测量;很可能连接比string.Format
链接更快。
答案 2 :(得分:3)
实际上,唯一的区别是第一个允许你控制布局
string.Format("*{0:3}*",1); // * 1*
或控制格式:
string.Format("*{0:c}*",1); // *$1.00*
在紧密循环中执行大量连接时,可以考虑连接的性能,在这种情况下,StringBuilder.Append和StringBuilder.AppendFormat都是首选。 AppendFormat和string.Format非常接近,性能方面,所以没有必要用第二个代替第一个。
答案 3 :(得分:0)
归结为“何时使用String.Format vs string concatenation更好”。
看到这个问题的答案: When is it better to use String.Format vs string concatenation?
答案 4 :(得分:-2)
由于字符串是不可变的(不能更改现有字符串每次必须创建一个新字符串)字符串格式可以具有性能优势,因为它不会创建尽可能多的内存引用。
result = string1 + " " + string2 + " " + string3
这会创建10个引用
result = string.Format("{0} {1} {2}", string1, string2, string3)
这会创建5个参考