我有一个名为 Employee
的类,其中包含 3 个名为 ID
、Name
、Dept
的属性。我需要实现 Copy
和 Clone
方法吗?当我使用 Copy
或 Clone
方法时,我需要避免转换吗?我该怎么做?
示例:与具有 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/