是否更好地使用StringBuilder而不是通过“+”运算符连接字符串?

时间:2018-02-12 20:46:09

标签: string concatenation stringbuilder

后者是否有任何缺点或是否取决于使用它的代码?

1 个答案:

答案 0 :(得分:0)

根据我的理解,连接字符串需要系统为新结果分配新的内存块,将第一部分复制到其中,将第二部分复制到其中,然后将其作为新结果返回。如果'来源'不再需要字符串,当垃圾收集器到来时,可以再次取消分配这些内存块。

StringBuilder的工作方式不同,因为它分配了一个很大的'前面的内存块(参见构造函数选项),每次你.Append(),它会将新部分复制到已分配的内存空间的正确位置。

关于这一点的好处是系统不需要在每次操作时一遍又一遍地分配更大的内存插槽。这使得它更快,因为它不需要一遍又一遍地分配或复制结果的第一部分。它还确保您的记忆在经过大量操作后看起来不像瑞士奶酪。

“坏”'事情是,它需要更多的努力来启动StringBuilder()对象,如果你所做的只是连接2个字符串而不是它可能不值得努力。 (IMHO)