string类替换和Stringbuilder替换

Rag*_*v55 3 c#

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

StringBuilder strBuilder  = new StringBuilder("value_test_this");
strBuilder.Replace('e','E');
Run Code Online (Sandbox Code Playgroud)

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

Aam*_*mir 5

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

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

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