我可以很肯定的告诉你,“string a=b="asd"; ”这句话本来就是错的,语法错误!至少在Visual Studio 2005无法通过!哪有人这样定义的。
应该这样:
string a="asd";
string b=a;
string类型是一种很特殊的引用类型,它是只读的!!!也就是上面的句子会导致两次分配内存空间!这也是为什么很多书都提到当操作很多字符串时,要使用stringbuidler,就是这个原因!
当然你可以使用String.Intern把它放到拘留池中这样就引用同一个对象了。
例如
string a="asd";
string b=string.intern(a);
string a="asd";
string b=a;
其实a,b是一块内存空间,但是一旦改变其中一个的值 就变成了两个
这样写是指向同一个"asd";
如果写成
a="asd";
b="asd";
这样就是有两个asd了
a 和 b 各 指向 一个。
废话!明显是开辟了两个空间噻,a一个、b一个,每个空间里面都存储的是"abc" ,你可以验证一下:
如果a是b的引用,那么你修改a的值,b的值也会跟着改变;如果没有改变,那么就说明是a和b都拥有自己的空间
up,都说完了