这几天学习了string的不可变性,什么事字符串的不可变性:string s1=“123”;string s2=“123”;定义了两个字符串变量,但是变量名的值都是相同的。string是引用类型,我们用图来说明一下;

 

string的不可变性_基础c#

这是我自己画的图,虽然难看了一些,但是还能看吧!就是说当定义字符串变量s1那么就在栈开辟了一块空间,给s1赋值,那么就在堆上开辟了一个地址我们上面s1的值为“123”,那么堆上的地址上的内容就是“123”。再看s2,同理在栈上开辟一块地方,当给s2赋值等于“123”时,因为s1的地址的值也是“123”,那么由于字符串的不可变性,相应的s1也就指向了堆上这个地址。最后s1和s2的地址是一样的。如果仍然不确定的话,可以再“即时窗口”输入 *s1 接着输入 *s2 用来查看地址是否是相同的。

    这就是string的不可变性,这是我的理解。如果有什么不对的地方,大家可以给我纠正,互相学习。