String.Concat,string.format和+之间有什么区别?

时间:2012-02-15 07:11:10

标签: c# .net string c#-4.0

有什么区别:

  • String.Concat
  • String.Format
  • +运营商。

无论是长串还是短串连接,哪一个在各种条件下都更有效。

1 个答案:

答案 0 :(得分:14)

string.Concat 只是将字符串连接在一起。除了调用ToString之外,它不提供任何转换,没有格式化等。

string.Format更丰富,允许格式模式等。

在C#源代码中使用+运算符时,编译器将其转换为对String.Concat的调用 - 它不是执行时运算符,例如{{1} }}

所以这个:

decimal

编译成:

string result = x + y + z;

就效率而言,明确调用string result = string.Concat(x, y, z); 和使用string.Concat可能是等效的。我通常希望它比+ 快,但在大多数情况下差异可以忽略不计。您应该首先编写最清晰,最易维护的代码(这通常意味着使用string.Format),然后只有在您拥有测试数据以显示您需要来优化该特定时才进行微优化一块,然后只有在你证明它有帮助后才保留优化。

请注意,一些优化可以产生巨大差异的区域是重复连接,通常是在循环中。这段代码非常低效:

string.Format

这最终必须在每次迭代时复制一个中间字符串。在这些情况下,要么使用string result = ""; foreach (var x in y) { // Do some processing... string z = ...; result += z; } ,要么使用LINQ查询来表示您最终需要连接的项目,然后StringBuilderstring.Join执行连接。