字符串类Replace和Stringbuilder Replace

本文关键字:Replace Stringbuilder 字符串 | 更新日期: 2023-09-27 17:53:02

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

既然字符串是不可变的,那么Replace在字符串类中是如何工作的呢,

字符串类Replace和Stringbuilder Replace

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

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

如果你想知道为什么字符串在c#中是不可变的,看看这个SO讨论

如果你做一个字符串。替换它只是简单地创建一个新的字符串(因为,正如你所说,它是不可变的)。在StringBuilder中,没有创建新的字符串,您已经修改的字符串。