2011-05-25 77 views
-1

我需要深入拷贝一个对象从一个类,我做了从同一类的另一个对象,我不想浅拷贝,我不想使用序列化方法 有没有其他简单的方法来使用??C#需要深拷贝一个对象

+1

是的,写代码。 – 2011-05-25 23:31:18

+0

感谢所有的答案=) – 2011-05-27 11:50:26

回答

1

一种便宜的方法是序列化,然后使用二进制序列化将其反序列化。

MyObject myobj = new MyObject(); 
// ... 

MemoryStream ms = new MemoryStream(); 
BinaryFormatter formatter = new BinaryFormatter(); 
formatter.Serialize(ms, myObj); 

MemoryStream ms2 = new MemoryStream(ms.ToArray()); 

var myobj2 = (MyObject)formatter.Deserialize(ms2); 
+0

Eww。那是邪恶的。 – alternative 2011-05-25 23:45:13

+1

我听到你的声音。但是如果你有一个真正复杂的对象图,这可能是最安全的方法。自定义的“深度复制”代码可能会在您添加它们时错过字段。 – 2011-05-26 00:13:31

+0

第二个流的创建是否会复制已写入流的所有数据? – alternative 2011-05-26 00:50:22