string类替换和Stringbuilder替换

时间:2011-04-27 08:05:47

标签: c#

string s = "value_test_this";
string m = s.Replace('e','E');

StringBuilder strBuilder  = new StringBuilder("value_test_this");
strBuilder.Replace('e','E');

因为字符串是不可变的,Replace如何在字符串类中工作,

2 个答案:

答案 0 :(得分:5)

它在内存中创建另一个字符串,然后将m指向该新字符串。旧字符串也会留在内存中。

如果必须对字符串进行频繁修改,这就是为什么应该使用StringBuilder的原因。

如果您想知道为什么字符串在C#中是不可变的,请查看this SO discussion

答案 1 :(得分:2)

如果你做一个string.Replace它只是创建一个新的字符串(因为,正如你所说,它是不可变的)。在StringBuilder中,没有创建新的字符串,你修改的字符串会被修改。