string builder vs string

时间:2010-09-25 20:06:30

标签: .net stringbuilder

  

可能重复:
  When to use StringBuilder?
  string is immutable and stringbuilder is mutable

字符串和字符串构建器的不同之处是什么? 我们在哪里使用字符串构建器?

2 个答案:

答案 0 :(得分:2)

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

这种差异很重要,例如,如果您尝试从许多较小的字符串创建一个大字符串。如果使用StringBuilder,则在不创建新对象的情况下追加字符串,从而获得O(n)性能。如果使用字符串,则会创建大量中间字符串,这些字符串会立即丢弃,但所有额外复制意味着它将成为O(n 2 )操作。

示例代码显示了每个用于从许多较小字符串构造大字符串的用法:

<强>字符串

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();

答案 1 :(得分:0)

除了字符串是不可变的并且stringbuilder是可变的之外,当你要进行大量的字符串连接时,你应该使用字符串构建器,因为这是一个非常昂贵的操作,特别是当包含在循环中时。