可能重复:
Cloning objects in C#
我有一个用c#创建的对象说Object1。我需要暂时将此对象备份到另一个对象,例如ObjectOriginal。
但是,如果我执行ObjectOriginal = Object1,则对象1的任何更改都会影响ObjectOriginal。我该怎么做?
答案 0 :(得分:2)
这完全取决于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只复制了结构。
答案 1 :(得分:1)
在您的类上实现Clone()或使用Object.MemberwiseClone()
http://msdn.microsoft.com/de-de/library/system.object.memberwiseclone(VS.80).aspx
答案 2 :(得分:0)
如果您想要一个对象的副本,问题始终是:复制的深度是多少?我的对象中的对象应该发生什么。是否应该复制这些内容,如果是,那么它们的引用会发生什么?
要获得更多信息,请从起点this blog post from Brad Abrams开始。