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

Abh*_*Dev 6 .net c# string c#-4.0

有什么区别:

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

无论是长串还是短串连接,哪一个在每种情况下都更有效.

Jon*_*eet 14

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

string.Format 是一个更丰富,允许格式模式等

当您+在C#源代码中使用运算符时,编译器会将其转换为调用String.Concat- 例如,它不是执行时运算符decimal.

所以这:

string result = x + y + z;
Run Code Online (Sandbox Code Playgroud)

编译成这样:

string result = string.Concat(x, y, z);
Run Code Online (Sandbox Code Playgroud)

在效率方面,明确的呼叫string.Concat和使用+可以是等效的.我一般认为速度要快,string.Format 但在大多数情况下差异可以忽略不计.您应该首先编写最清晰,最易维护的代码(这通常意味着使用string.Format),然后只有当您拥有测试数据以显示您需要优化该特定部分时才进行微优化,然后只有在您完成后才保留优化证明它有帮助.

注意,一些优化可以产生巨大差异的区域是重复级联,通常是循环.这段代码非常低效:

string result = "";
foreach (var x in y)
{
    // Do some processing...
    string z = ...;
    result += z;
}
Run Code Online (Sandbox Code Playgroud)

这最终必须在每次迭代时复制一个中间字符串.在这种情况下,无论是使用StringBuilder,或使用LINQ查询来代表你最终需要来连接,然后或者物品string.Joinstring.Concat进行级联.