使用+ =运算符来连接字符串

时间:2012-11-23 13:12:33

标签: c# .net string concatenation string-concatenation

  

可能重复:
  String vs StringBuilder

为什么我不能使用+=来连接字符串?

最快的选择是什么?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

如果你想构建字符串,你应该查看针对此类操作优化的StringBuilder Class

简而言之:一些concat字符串不应该损害性能,但是通过在循环中添加小位来构建字符串会减慢你的速度和/或使用大量内存

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