我有一个叫做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方法中把这个值赋给一个新的对象.