日期:2014-05-18  浏览次数:20693 次

字符串是不可变的 为什么还能+=
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的原始内容没有改变过