浅拷贝和对象引用的关系

jefflovejava 2008-12-12 09:49:28
谁知道浅拷贝和传递一个对象引用有什么不同?
...全文
121 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
quincystar 2008-12-12
  • 打赏
  • 举报
回复
学习了
愚痴鱼 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jefflovejava 的回复:]
也就是说

SomeObject obj1 = new SomeObject(...);
SomeObject obj2;

obj2 = obj1.MemberwiseClone();

obj2 = obj1();

上面两个方式在编译处理的时候是一样的么??
[/Quote]
首先,你这个语法是不通过的,obj2 = obj1.MemberwiseClone(); 这句会出错;
MemberwiseClone是受保护方法,不能这样直接用;

浅拷贝就是拷贝了引用;
当你定义的类型里全是值类型时,这样做就是很方便的复制;如果你定义的类型里有引用类型,但是你后面的处理会忽视掉
这些引用类型不对它们进行处理,你也可以用浅拷贝,否则就要小心使用,避免一改全改;


jummy_lin 2008-12-12
  • 打赏
  • 举报
回复
浅拷贝本来就没有什么意义,并且危害很大。如果程序中因为浅拷贝造成逻辑错误,这种错误是很难跟踪的。所以使用引用类型的时候一定要慎重。
jefflovejava 2008-12-12
  • 打赏
  • 举报
回复
如果一样的话,浅拷贝的意义在于什么,比如有什么特殊的应用么?
jefflovejava 2008-12-12
  • 打赏
  • 举报
回复
笔误
obj2 = obj1;
jefflovejava 2008-12-12
  • 打赏
  • 举报
回复
也就是说

SomeObject obj1 = new SomeObject(...);
SomeObject obj2;

obj2 = obj1.MemberwiseClone();

obj2 = obj1();

上面两个方式在编译处理的时候是一样的么??
Fibona 2008-12-12
  • 打赏
  • 举报
回复
传递引用指针跟浅拷贝一样,如果你在方法中改变了对值的值,原来对像的值也会发生变化
cheng_er 2008-12-12
  • 打赏
  • 举报
回复
楼上说的是深浅拷贝的区别吧
wuyq11 2008-12-12
  • 打赏
  • 举报
回复
一值类型变量,一种引用类型变量。对于前者,copy是属于全盘复制;而对于后者,一般的copy只是浅copy,相当于只传递一个引用指针一样。
浅拷贝:只复制对象的基本类型,对象类型,仍属于原来的引用.
深拷贝:不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.
浅拷贝和深拷贝区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧