相关疑难解决方法(0)

为什么String.Concat没有针对StringBuilder.Append进行优化?

我发现常量字符串表达式的连接由编译器优化为一个字符串.

现在使用只在运行时知道的字符串串联,为什么编译器不会优化循环中的字符串连接和多于10个字符串的串联来StringBuilder.Append代替?我的意思是,这是可能的,对吧?实例化a StringBuilder并进行每个连接并将其转换为Append()呼叫.

是否有任何理由为什么这应该可以 进行优化?我错过了什么?

.net c# string clr optimization

21
推荐指数
4
解决办法
2339
查看次数

我是否应该在C#中使用StringBuilder,如果我有大量的连接,即使总长度很小?

我正在审查一些代码,我看到大量的字符串连接,但它们都是非常小的字符串.像这样的东西:

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的良好的盈亏平衡规则(字符串长度或不同连接数)?

c# stringbuilder

0
推荐指数
1
解决办法
146
查看次数

标签 统计

c# ×2

.net ×1

clr ×1

optimization ×1

string ×1

stringbuilder ×1