【发布时间】:2011-01-21 09:06:35
【问题描述】:
我有一个在 c# 中创建的对象,比如 Object1。我需要将此对象临时备份到另一个对象,比如 ObjectOriginal。
但是,如果我执行 ObjectOriginal = Object1,则对 Object 1 的任何更改都会影响 ObjectOriginal。我该怎么办?
【问题讨论】:
我有一个在 c# 中创建的对象,比如 Object1。我需要将此对象临时备份到另一个对象,比如 ObjectOriginal。
但是,如果我执行 ObjectOriginal = Object1,则对 Object 1 的任何更改都会影响 ObjectOriginal。我该怎么办?
【问题讨论】:
在您的类上实现 Clone() 或使用 Object.MemberwiseClone()
http://msdn.microsoft.com/de-de/library/system.object.memberwiseclone(VS.80).aspx
【讨论】:
这完全取决于 Object1 究竟是什么,即它是 DataTable、String 还是完全其他的东西?
通过写作:
object Object1 = new Thing();
object Object2 = Object1;
您将获得对您在第一行中实例化的对象的第二个引用。您需要做的是查看“Thing”,看看它是否有 Copy、Clone 或类似名称的方法并使用它:
object Object1 = new Thing();
object Object2 = Object1.Copy();
例如,DataTable 提供 Copy 和 Clone 两种方法,其中 Copy 复制 DataTable 的结构和数据,而 Clone 仅复制结构。
【讨论】:
如果您想要一个对象的副本,问题始终是:副本将出现多深?我的对象中的对象应该发生什么。这些是否也应该被复制,如果是的话,它们的引用应该如何处理??
欲了解更多信息,请访问起点this blog post from Brad Abrams。
【讨论】: