C#从对象内部进行深度复制
我有一个具有许多私有属性的对象。它有一个空构造函数和一个接受自身实例化版本的构造函数。我需要将这个新实例分配给旧实例的深层副本。这能做到吗? 例如:C#从对象内部进行深度复制,c#,constructor,instance,deep-copy,C#,Constructor,Instance,Deep Copy,我有一个具有许多私有属性的对象。它有一个空构造函数和一个接受自身实例化版本的构造函数。我需要将这个新实例分配给旧实例的深层副本。这能做到吗? 例如: Halp.您可以使用以下方法将对象从一个对象深度复制到另一个对象 public T DeepCloneTheObject<T>(T obj) { using (var ms = new MemoryStream()) { var format
Halp.您可以使用以下方法将对象从一个对象深度复制到另一个对象
public T DeepCloneTheObject<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T)formatter.Deserialize(ms);
}
}
public T DeepCloneTheObject(T obj)
{
使用(var ms=new MemoryStream())
{
var formatter=新的二进制格式化程序();
序列化(ms,obj);
ms.Position=0;
返回(T)格式化程序。反序列化(ms);
}
}
在您的示例中,您可以说,DeepCloneTheObject(f)谢谢您的回复,但是我如何将其分配给当前对象呢?我需要使实例的所有属性与克隆的属性相等。我唯一能想到的是类似“this.Object=DeepCloneTheObject(f);”的东西。是的,这样做应该行得通
public T DeepCloneTheObject<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T)formatter.Deserialize(ms);
}
}