如何在C#中复制和比较对象实例?

时间:2011-11-08 14:15:17

标签: c# clone equals

假设我有一个班级MyClass。然后我有这个类的实例,如:

MyClass myobject = ...  

然后我想做两件事:

  1. 将实例复制到另一个对象。
  2. 比较两个实例以检查它们是否相同(相等)。
  3. 对此最简单的解决方案是什么?我搜索过互联网并找到了许多解决方案,但没有一个像我预期的那么简单。

3 个答案:

答案 0 :(得分:1)

在班级中实施IEquatable(t)。您可以在Equals()方法中实现自己的比较逻辑。

您可能还想查看ICloneable

答案 1 :(得分:0)

  

将实例复制到另一个对象。

我假设不只是处理对象引用而是处理内容。为此,您必须在IClonable类中实现MyClass接口。

  

比较两个实例以检查它们是否相同(等于)。

您必须在IEquatable课程中实施Myclass界面。

答案 2 :(得分:0)

正如其他人指出的那样,进行相等比较,实现IEquatable或者只是覆盖Equals()和GetHashCode()方法。

克隆(复制)在像C#这样的内存管理语言中不是一个小问题,因为你不能只复制内存。实施IClonable是一种可能性,但从客户的角度来看,无论是深度克隆还是浅层克隆,都会产生混淆。

根据我的经验,实现克隆的最简单方法之一是创建一个可序列化类,并简单地序列化和反序列化它。当然,你也可以获得一个Serializable对象的其他好处。