字符串生成器VS串

问题描述:

可能重复:
When to use StringBuilder?
string is immutable and stringbuilder is mutable字符串生成器VS串

什么不同势字符串,字符串生成的? 我们在哪里使用字符串生成器?

主要区别在于一个StringBuilder是可变的(意味着它可以被修改),而一个字符串是不可变的(意味着一旦它被构造就不能被修改)。

如果您尝试从大量较小的字符串创建大字符串,则此差异非常重要。如果使用StringBuilder,则可以在不创建新对象的情况下附加字符串,从而实现O(n)性能。如果使用字符串,则会创建大量立即丢弃的中间字符串,但所有额外的复制都意味着它会变为O(操作)。

示例代码示出了用于contructing从许多较小的字符串大串中的每个的用法:

字符串

string s = ""; 
for (int i = 0; i < 10000; ++i) 
{ 
    s += "foo"; 
} 

的StringBuilder

StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < 10000; ++i) 
{ 
    sb.Append("foo"); 
} 
string s = sb.ToString(); 

除了字符为不可变的和stringbuilder是可变的,你应该使用字符串buil因为这是一个非常昂贵的操作,特别是当包含在循环中时。