可能重复:
String vs StringBuilder
为什么我不应该使用+=
连接字符串?
最快的选择是什么?
字符串在 .NET 中是不可变的。这意味着一旦它们存在,就无法更改。
旨在缓解此问题,允许您附加到n大小的StringBuilder
预定字符数组(我认为默认为 16?!)。但是,一旦超过指定的限制..它需要分配一个更大的自身副本,并将内容复制到其中..从而产生可能更大的问题。StringBuilder
这归结为过早的优化。除非您注意到字符串连接使用过多内存的问题。担心它是没有用的。
+= 和 String1 = String1+String2 做同样的事情,将整个字符串复制到一个新字符串。
如果您在循环中执行此操作,则会生成大量内存分配,从而导致性能下降。
如果您想构建长字符串,您应该查看针对此类操作进行了优化的StringBuilder 类。
简而言之:一些 concat 字符串不会对性能造成太大影响,但是通过在循环中添加小位来构建大字符串会大大减慢您的速度和/或使用大量内存。
另一篇关于字符串性能的有趣文章:http: //www.codeproject.com/Articles/3377/Strings-UNDOCUMENTED