string
string是引用类型(与类在使用中有所不同),在栈中保存着堆中的值的地址;
string s1="123";
string s2="123";
//s1和s2在栈中的地址不同,但栈中的值一致,均为"123"在堆中的地址。
string s1="123";
s1="234";
//string变量赋的新值"234"是在堆中新开辟的空间,使**s1**指向新的地址,原"123"的空间成为内存垃圾。
//虽然string是引用类型,但因其不可变性,s1仍是原值
string s1 = "123";//将堆中123地址赋给s1
string s2 = s1;//将123的地址赋给s2
s2 = "234";//将堆中234的地址赋给s2,s1仍指向123
string变量可下标访问,但是是只读。
StringBuilder
StringBuilder是一个类,通过实例化对象使用;
StringBuilder会在原有堆空间上进行更改,减少内存垃圾的产生,对于大量的字符串操作采用StringBuilder;
StringBuilder通常最终采用Tostring()方法转换为**string*;