复制C#对象和引用

Copy C# object along with reference

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Cloning objects in C#

我有一个用c创建的对象,比如说object1。我需要暂时将这个对象备份到另一个对象,比如说ObjectOriginal。

但是,如果我执行objectOriginal=object1,对对象1的任何更改都会影响objectOriginal。我该怎么办?


这完全取决于object1实际上是什么,也就是说,它是一个数据表、一个字符串还是其他什么东西?

写作:

1
2
object Object1 = new Thing();
object Object2 = Object1;

您将获得对第一行中实例化的对象的第二个引用。您需要做的是查看"thing"并查看它是否具有复制、克隆或类似命名的方法,然后使用它:

1
2
object Object1 = new Thing();
object Object2 = Object1.Copy();

例如,DataTable提供了复制和克隆方法,其中复制复制复制了DataTable和数据的结构,克隆只复制了结构。


在类上实现clone()或使用object.memberWiseClone()。

http://msdn.microsoft.com/de-de/library/system.object.memberwiseclone(vs.80).aspx


如果您想要一个对象的副本,问题始终是:副本会出现多深?我的对象中的对象会发生什么。是否也应复制这些文件?如果是,它们的引用会发生什么情况??

有关更多信息,请从brad abrams的博客文章开始。