我什么时候应该使用String.Format或String.Concat而不是串联运算符?

Kra*_*ica 10 c# string concatenation

在C#中,可以通过几种不同的方式连接字符串:

使用串联运算符:

var newString = "The answer is '" + value + "'.";
Run Code Online (Sandbox Code Playgroud)

使用String.Format:

var newString = String.Format("The answer is '{0}'.", value);
Run Code Online (Sandbox Code Playgroud)

使用String.Concat:

var newString = String.Concat("The answer is '", value, "'.");
Run Code Online (Sandbox Code Playgroud)

每种方法的优点/缺点是什么?我应该什么时候比其他人更喜欢?

问题出现是因为开发人员之间的争论.一个从未使用String.Format的级联-他认为,这是格式化字符串,而不是进行连结,那就是始终不可读,因为该字符串中的项目以错误的顺序表示.其他经常使用String.Format的级联,因为他认为这使代码更易于阅读,特别是在有几套参与报价.这两个开发人员也使用连接运算符和String.Builder.

Jon*_*röm 17

关于速度,它几乎总是无所谓.

var answer = "Use what makes " + "the code most easy " + "to read";
Run Code Online (Sandbox Code Playgroud)

  • 使用字符串连接通常会在内存中产生大量小对象,这可能会对垃圾收集性能产生负面影响.通过链接测试很难衡量这种效果,但对于性能要求较高的大型系统来说,这可能是一个非常大的性能问题. (4认同)
  • 在实际发生之前无需考虑此类性能问题.除非在一些非常紧密的循环中使用代码,否则它根本无关紧要. (3认同)