string s = "value_test_this";
string m = s.Replace('e','E');
StringBuilder strBuilder = new StringBuilder("value_test_this");
strBuilder.Replace('e','E');
因为字符串是不可变的,Replace
如何在字符串类中工作,
答案 0 :(得分:5)
它在内存中创建另一个字符串,然后将m
指向该新字符串。旧字符串也会留在内存中。
如果必须对字符串进行频繁修改,这就是为什么应该使用StringBuilder
的原因。
如果您想知道为什么字符串在C#中是不可变的,请查看this SO discussion
答案 1 :(得分:2)
如果你做一个string.Replace它只是创建一个新的字符串(因为,正如你所说,它是不可变的)。在StringBuilder中,没有创建新的字符串,你修改的字符串会被修改。