有一个User类,里面有一个Name属性.
在主程序有如下代码
User aUser,bUser;
aUser=new User();
aUser.Name="aaaaa";
bUser=aUser这个bUser并没有实例化,没有分配内存空间,bUser=aUser这样的赋值是附给他一个内存地址,只要修改一个对象的值,另外一个对象的值也会跟着改变,下面我修改了下代码User aUser,bUser;
aUser=new User();
bUser=new User();
aUser.Name="aaaaa";
bUser=aUser
bUser.Name="bbbbb";问题来了,按照我的理解bUser已经实例化且分配了内存空间,但是结果却随着bUser的改变,aUser也跟着改变,求解??没办法引用类型一直弄得个似懂非懂。。见谅,请高手赐教。
在主程序有如下代码
User aUser,bUser;
aUser=new User();
aUser.Name="aaaaa";
bUser=aUser这个bUser并没有实例化,没有分配内存空间,bUser=aUser这样的赋值是附给他一个内存地址,只要修改一个对象的值,另外一个对象的值也会跟着改变,下面我修改了下代码User aUser,bUser;
aUser=new User();
bUser=new User();
aUser.Name="aaaaa";
bUser=aUser
bUser.Name="bbbbb";问题来了,按照我的理解bUser已经实例化且分配了内存空间,但是结果却随着bUser的改变,aUser也跟着改变,求解??没办法引用类型一直弄得个似懂非懂。。见谅,请高手赐教。
bUser的内存空间被丢掉了因为bUser的内存空间又被你指向了aUser了
而bUser原来的内存空间现在没有人指向,过一段时间就会被回收了
aUser=new User();
bUser=new User();
aUser.Name="aaaaa";
bUser.Name=aUser.Name;
bUser没有new,但给它赋了 aUser的值,这时候bUser和aUser实际上都指向对一个对象,这就是引用的特点,只传地址,不复制对象.就象C++的指针不New出来而直接赋值是一样的道理