C#需要深度复制对象

C#需要深度复制对象,c#,.net,object,constructor,clone,C#,.net,Object,Constructor,Clone,我需要将我创建的类中的一个对象深度复制到同一个类中的另一个对象,我不想进行浅层复制,也不想使用序列化方法 有没有其他简单的方法可以使用???通过Clone方法自己实现并提供克隆。一种廉价的方法是序列化它,然后使用二进制序列化直接反序列化它 MyObject myobj = new MyObject(); // ... MemoryStream ms = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter();

我需要将我创建的类中的一个对象深度复制到同一个类中的另一个对象,我不想进行浅层复制,也不想使用序列化方法
有没有其他简单的方法可以使用???

通过
Clone
方法自己实现并提供克隆。

一种廉价的方法是序列化它,然后使用二进制序列化直接反序列化它

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);

我听到了。但是如果你有一个真正复杂的对象图,这可能是最安全的方法。自定义“深度复制”代码在添加字段时很容易丢失字段。创建第二个流是否会复制已写入流的所有数据?@mathepic是的。直到第一次回答之后,我才意识到第一个“答案”重定向到了一个类似的解决方案:他们通过从头开始寻找流来重用流。但是,使用release GC和MemoryStream的内部结构,它可能会重用阵列