我发现常量字符串表达式的连接由编译器优化为一个字符串.
现在使用只在运行时知道的字符串串联,为什么编译器不会优化循环中的字符串连接和多于10个字符串的串联来StringBuilder.Append代替?我的意思是,这是可能的,对吧?实例化a StringBuilder并进行每个连接并将其转换为Append()呼叫.
是否有任何理由为什么这应该或可以 不进行优化?我错过了什么?
我正在审查一些代码,我看到大量的字符串连接,但它们都是非常小的字符串.像这样的东西:
public string BuildList()
{
return "A" + GetCount() + "B" + TotalCount() + "C" + AMountLeft()
+ "D" + DaysLeft + "R" + Initials() + "E";
}
Run Code Online (Sandbox Code Playgroud)
我正在简化它,但总的来说,最长的字符串大约是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 . .
}
Run Code Online (Sandbox Code Playgroud)
我看不出与测试有很大的不同,但想看看是否有一个关于使用StringBuilder的良好的盈亏平衡规则(字符串长度或不同连接数)?