c# – 如何在Class中实现Clone和Copy方法?

前端之家收集整理的这篇文章主要介绍了c# – 如何在Class中实现Clone和Copy方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个叫做Employee的类,叫做ID,Name,Dept.我需要实现复制和克隆方法?当我使用Copy或Clone方法时,我需要避免Casting?我该怎么办?

例如:DataTable与DataTable.Copy()和DataTable.Clone()相同.

解决方法

您需要实现IClonable接口并提供克隆方法的实现.如果您想避免投射,请勿实施.

一个简单的深克隆方法可以将对象序列化到内存中,然后反序列化它.您的类中使用的所有自定义数据类型都需要使用[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;
    }

如果你的班级只有value types,那么你可以使用一个copy constructor,或者只是在Clone方法中把这个值赋给一个新的对象.

猜你在找的C#相关文章