如何在类中实现克隆和复制方法?

Kis*_*mar 13 c# casting clone copy

我有类调用Employee3个属性叫ID,Name,Dept.我需要实现CopyClone方法?当我使用CopyClone方法时,我需要避免施法?我该怎么做?

例如:同DataTable其具有DataTable.Copy()DataTable.Clone().

Mid*_*hat 14

您需要实现IClonable接口并为clone方法提供实现.如果您想避免强制转换,请不要执行此操作.

一个简单的深度克隆方法可以是将对象序列化为内存然后反序列化.您的类中使用的所有自定义数据类型都需要使用[Serializable]属性进行序列化.对于克隆,您可以使用类似的东西

  public MyClass Clone()
    {
        MemoryStream ms = new MemoryStream();
        BinaryFormatter bf = new BinaryFormatter();

        bf.Serialize(ms, this);

        ms.Position = 0;
        object obj = bf.Deserialize(ms);
        ms.Close();

        return obj as MyClass;
    }
Run Code Online (Sandbox Code Playgroud)

如果您的类只有值类型,那么您可以使用复制构造函数或仅将值分配给Clone方法中的新对象.

  • @Rowland - 如果他们不是,你至少得到一个例外! (3认同)