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

标签 c# casting copy clone

我有一个名为 Employee 的类,其中包含 3 个名为 IDNameDept 的属性。我需要实现 CopyClone 方法吗?当我使用 CopyClone 方法时,我需要避免转换吗?我该怎么做?

示例:与具有 DataTable.Copy()DataTable.Clone()DataTable 相同。

最佳答案

您需要实现 IClonable 接口(interface)并提供克隆方法的实现。如果您想避免强制转换,请不要实现它。

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

如果你的类(class)只有value types , 那么你可以使用 copy constructor或者只是将值分配给 Clone 方法中的新对象。

关于c# - 如何在类中实现克隆和复制方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152733/

相关文章:

c# - C# 类型推断有多好?

c# - 使用 Roslyn 加载 sln 文件时编译失败,但在 Visual Studio 中编译

MySQL 插入转换

php - 当我使用 php 将一个表中的一行提交到另一个表时出现错误

java - 如何使用复制构造函数?

c# - 如何在 Azure 函数签名中使用强类型 http 方法

c# - 将自定义路径设置为引用的 DLL?

c++ - Parent 类型的继承容器不能容纳 child ?

c - 如何防止宏在转换时隐藏 'const' (C)

javascript - 选择表格并将其复制到剪贴板