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