有没有办法在C#中复制类?像var dupe = MyClass(original)之类的东西。
最佳答案
您可能在谈论深拷贝(deep copy vs shallow copy)?
您要么必须:
[Serializable]
属性,则public static T DeepCopy<T>(T other)
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, other);
ms.Position = 0;
return (T)formatter.Deserialize(ms);
}
}
要获取浅拷贝,可以使用
Object.MemberwiseClone()
方法,但这是一个 protected 方法,这意味着您只能在类内部使用它。对于所有深层复制方法,考虑对其他对象的任何引用或循环引用很重要,这可能会导致创建比您想要的深拷贝。
关于c# - 复制一个类,C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1031023/