字符串是不可变的 为什么还能+=
string a = "hello ";
string b = "h ";
// Append to contents of 'b '
b += "ello ";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
既然是不可变的,那为什么还能+=呢?????
还有一个可变的字符串对象是什么,要用new 的,我给忘了
------解决方案--------------------这个是面试的老问题了,呵呵,基础。ls说的基本是对的。
a,b你可以理解为指向内存块的指针,a+=b 的步骤是: 再开辟一块空间,内容是a+b的内容,然后由a指向他
注意,此时的内存中有3块string, 1:a 的原始内容 2: b的内容 3:a的新内容
所以说string 不可以变,也是对的,因为原有的a的原始内容没有改变过