【发布时间】:2013-10-16 19:34:12
【问题描述】:
在我开始之前,我知道还有其他几个问题可以“回答”这个问题,但不是我能完全理解的方式。这就是我所指的: Deep copying in C#
Why Copying in C# is a terrible idea
我已经进行了相当多的研究,我希望有人可以向我解释如何将对象设置为另一个对象的值。
例如,假设:
myObject bob;
bob = new myObject();
myObject joe
joe = bob
据我所知,joe 现在指向 bob 的 bob 实例。这些对象是否仍然独立运行?
如何创建两个对象,将一个对象的内容复制到另一个对象,并让它们成为两个独立对象,它们的字段、方法和事件分别发生?
很抱歉再次问这个问题,但我似乎在其他任何地方都找不到对我有意义的解释。
【问题讨论】:
-
完成上述分配后,bob 和 joe 都指向内存中的同一个实例。 bob 和 joe 可以被认为是指针变量。要创建副本,请创建一个新实例,然后复制每个成员。当然,这可以在方法中编码。
-
我会问自己的第一个问题是“为什么我需要这个对象的精确副本?”如果您发现需要大量彼此独立的对象的相似/相同副本,则可以考虑研究对象工厂样式模式。
-
您能否详细说明其他答案无法为您解答的具体问题?这些答案似乎没有任何其他问题。似乎您只是在说“我不明白答案”,这并不是一个真正的问题,如果将其解释为一个问题,那将无法回答。
-
您可以做一个deep or shallow copy ..实现ICloneable 接口,然后克隆该对象调用克隆方法...虽然它是not 建议实现它..创建你自己的代替方法!正如它所做的那样here逐字节