-1

可能重复:
String vs StringBuilder

为什么我不应该使用+=连接字符串?

最快的选择是什么?

4

2 回答 2

1

字符串在 .NET 中是不可变的。这意味着一旦它们存在,就无法更改。

旨在缓解此问题,允许您附加到n大小的StringBuilder预定字符数组(我认为默认为 16?!)。但是,一旦超过指定的限制..它需要分配一个更大的自身副本,并将内容复制到其中..从而产生可能更大的问题。StringBuilder

这归结为过早的优化。除非您注意到字符串连接使用过多内存的问题。担心它是没有用的。

于 2012-11-23T13:21:03.023 回答
0

+= 和 String1 = String1+String2 做同样的事情,将整个字符串复制到一个新字符串。

如果您在循环中执行此操作,则会生成大量内存分配,从而导致性能下降。

如果您想构建字符串,您应该查看针对此类操作进行了优化的StringBuilder 类。

简而言之:一些 concat 字符串不会对性能造成太大影响,但是通过在循环中添加小位来构建字符串会大大减慢您的速度和/或使用大量内存。

另一篇关于字符串性能的有趣文章:http: //www.codeproject.com/Articles/3377/Strings-UNDOCUMENTED

于 2012-11-23T13:18:44.027 回答