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

时间:2013-01-24 09:39:56

标签: c# string concatenation stringbuilder

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

所有变量都是其他属性。

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

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

2 个答案:

答案 0 :(得分:8)

在这种情况下使用最可读的内容。否则它是premature optimizatio n。

我会使用String.Format

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

即使字符串连接也不是那么糟糕,因为字符串存储在intern pool中。因此,如果您第二次使用字符串,则不会创建它,但会使用已有的引用。

根据经验:

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

答案 1 :(得分:2)

使用String.Format

public string Summary
{
  get 
  {
    return String.Format(
        "{0}<strong>[{1} Devices - {2} Offline, {3} Pending </strong>",
        Name.Replace("_", " "), Total, BadCount, PendingCount);
  }
}