【发布时间】:2018-02-12 20:46:09
【问题描述】:
后者有什么缺点还是取决于使用它的代码?
【问题讨论】:
-
你的问题很笼统,所以不确定你在找什么。如果您询问性能,请参阅stackoverflow.com/questions/5443215/…
标签: string concatenation stringbuilder
后者有什么缺点还是取决于使用它的代码?
【问题讨论】:
标签: string concatenation stringbuilder
据我了解,连接字符串需要系统为新结果分配一个新的内存块,将第一部分复制到其中,将第二部分复制到其中,然后将其作为新结果返回。如果不再需要“源”字符串,则可以在垃圾收集器出现时再次释放这些内存块。
StringBuilder 的工作方式不同,它会预先分配一个“大”内存块(请参阅构造函数选项),并且每次您 .Append() 到它时,它都会将新部分复制到已经分配的内存空间。
这样做的好处是系统不需要在每次操作时一遍又一遍地分配稍大的内存插槽。这使它更快,因为它不需要一遍又一遍地分配或复制结果的第一部分。它还可以确保您的记忆在经过大量操作后看起来不像瑞士奶酪。
'不好'的事情是它需要更多的努力来启动 StringBuilder() 对象,如果你所做的只是连接两个字符串,那么它可能不值得努力。 (恕我直言)
【讨论】: