string类型是一个引用类型,可以为空,但是实际用起来类似值类型
string对象一旦创建,就不能修改。所有对字符串的修改操作(如连接、替换等)都会创建一个新的字符串对象,而不是在原有字符串上进行修改。这一点类似于值类型的行为,因为对其进行的操作会生成新的副本。
string s1 = "hello";
string s2 = s1;
s1 = "world";
// s1 现在是 "world",但 s2 仍然是 "hello"
类似的,当把string传递给方法时,比如把str传给方法,哪怕在方法里面对str的属性进行了修改,里面的实际操作是生成了另一个指针,指向修改的那个字符串对象,所以原先的str在方法结束后还是不会修改
优化
1.使用StringBuilder
2.使用Span或者Memory