Whats a “shallow copy” of an objects
Possible Duplicate:
What is the difference between a deep copy and a shallow copy?
今天我在这里看到了这个:http://msdn.microsoft.com/en-us/library/system.web.routing.route.aspx成员函数之一是:
"memberWiseClone-创建当前对象的浅副本。(从对象继承。)
那么"肤浅的副本"A节是什么?深拷贝?
- stackoverflow.com/questions/184710/…
- @Ayush谢谢,现在将删除问题
浅复制仅替换对象当前级别上的属性,这意味着如果将对象作为属性,它将具有与原始对象相同的引用。当然,如果属性是值类型或原语,这不是问题。
- 这个答案是怎么通过O.O.
- 我几乎不明白那是什么意思?这是否意味着肤浅的复制实际上不复制任何东西?只是传递引用?在一个较浅的副本中,两个对象将作为您的意思相同的对象?
- @sspoke:好吧,这可以用集合来说明,如果你有一个集合的浅副本,你有两个集合,它们都指向相同的元素,如果是深副本,那么复制集合中的所有元素都是副本。一份肤浅的副本确实复制了一些东西:参考文献。另请参阅重复的问题和维基百科。
- 我最终使用了memberWiseClone(),我猜这就是我需要的,我正在尝试修复一个bug,在这个bug中,我两个对象都使用赋值操作符=。它们都开始互相修改,让我把头发拔出来,因为我想让它们保持坐标。人们告诉我使用struct,而不是类,我不能使用struct,因为我使用该类进行XML反序列化,所以我希望这个简单的副本是我需要的!到目前为止,我认为它运行良好,我必须稍后运行一些测试。
- @sspoke:这是编程时必须理解的基本概念之一,即对引用类型使用赋值不会复制对象,但两个引用将指向对象的同一个实例。
- 是的,我理解这一点,但是在阅读了维基百科关于浅拷贝和深拷贝的文章之后,浅拷贝和分配做的一样,两个指针都被复制到一个指针上,共享发生了。相当混乱……(因为我没有分配=bug),我知道Deep copy会复制所有在您试图克隆的对象中共享的内部类,我不知道如何复制,而且实际上我也没有用。任何看起来维基百科是错误的或者我误解了。但现在似乎工作得很好。我希望这不仅仅是运气好,克隆人的工作还是克隆!谢谢)