我正在审查一些代码,我看到了大量的字符串连接,但它们都是非常小的字符串。像这样:
public string BuildList()
{
return "A" + GetCount() + "B" + TotalCount() + "C" + AMountLeft()
+ "D" + DaysLeft + "R" + Initials() + "E";
}
我正在简化它,但总的来说,最长的字符串大约是300个字符,而+
的数量大约是20.我试图弄清楚它是否值得将它转换为StringBuilder并做类似这样的事情:
public string BuildList()
{
var sb = new StringBuilder();
sb.Append("A");
sb.Append(GetCount());
sb.Append("B");
sb.Append(TotalCount());
sb.Append("C");
sb.Append(AmountLeft());
sb.Append("D");
// etc . .
}
我无法看到与测试有很大差异,但想知道是否有关于使用StringBuilder(字符串长度或不同连接数)的良好盈亏平衡规则?
答案 0 :(得分:5)
对于具有有限数量的变量字符串的这种固定情况,并且在这些值之间具有始终相同的文本部分,我个人会在那里使用字符串格式。这样,你的意图就会变得更清晰,而且更容易看到发生了什么:
return string.Format("A{0}B{1}C{2}D{3}R{4}E",
GetCount(), TotalCount(), AmountLeft(), DaysLeft(), Initials());
请注意,string.Format
为slightly slower而非string.Concat
(正如其他人所说,当您使用+
构建字符串时使用)。但是,字符串连接不太可能成为您应用程序中的瓶颈,因此您应该倾向于明确微优化,直到这成为实际问题。
答案 1 :(得分:4)
不,在这种情况下,没有理由支持StringBuilder
字符串连接。
您的第一个代码将成为String.Concat
的一次调用,使用StringBuilder
会稍微提高效率。