可能重复:
When to use StringBuilder?
string is immutable and stringbuilder is mutable
字符串和字符串构建器的不同之处是什么? 我们在哪里使用字符串构建器?
答案 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是可变的之外,当你要进行大量的字符串连接时,你应该使用字符串构建器,因为这是一个非常昂贵的操作,特别是当包含在循环中时。