从属性返回字符串连接的最有效方法

Dav*_*idB 4 c# string stringbuilder concatenation

我已经在这里阅读了一些帖子,常见的建议是如果加入三个字符串,stringbuilder是最有效的.

所有变量都是其他属性.

public string Summary
{
  get 
  {
    return Name.Replace("_", " ") + "<strong>[" + Total + " Devices - " + BadCount + " Offline, " + PendingCount + " Pending]</strong>";
  }
}
Run Code Online (Sandbox Code Playgroud)

我加入四,是一个简单的连接适合或我应该使用stringbuilder?只是看起来有点矫枉过正.

Tim*_*ter 8

在这种情况下使用最可读的内容.否则就是过早的优化.

我会用String.Format:

String result = String.Format("{0}<strong>[{1} Devices - {2} Offline, {3} Pending]</strong>"
, Name.Replace("_", " ")
, Total
, BadCount
, PendingCount);
return result;
Run Code Online (Sandbox Code Playgroud)

甚至字符串连接也不是那么糟糕,因为字符串存储在实习池中.因此,如果您第二次使用字符串,则不会创建它,但会使用已有的引用.

所以经验法则:

  • 如果你连接几个字符串并且代码很难理解,请使用 String.Format
  • 如果你串联几个(文字),字符串和代码仍然是可读的,使用+(字符串连接)
  • 如果您在带有变量字符串的(长)循环中创建字符串,请使用 StringBuilder

  • 让我想起这句话:'你应该更担心你的代码的可维护性和可读性而不是它的性能.在该示例中,性能差异几乎不存在. (3认同)