使用字符串格式化与字符串连接有什么好处?

时间:2011-01-25 22:18:21

标签: c# string string-formatting string-concatenation

  

可能重复:
  C# String output: format or concat?

使用它的好处是什么:

Console.WriteLine("{0}: {1}", e.Code, e.Reason);

VS。这样:

Console.WriteLine(e.Code + ": " + e.Reason);

????

5 个答案:

答案 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.AppendStringBuilder.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个引用

  • 结果
  • 字符串1
  • 字符串2
  • STRING3
  • “”
  • “”
  • string1 +“”
  • string1 +“”+ string2
  • string1 +“”+ string2 +“”
  • string1 +“”+ string2 +“”+ string 3

result = string.Format("{0} {1} {2}", string1, string2, string3)

这会创建5个参考

  • 结果
  • 字符串1
  • 字符串2
  • STRING3
  • “{0} {1} {2}”