对象类的实现方法=>公共虚拟布尔Equals(obj);

时间:2018-10-31 04:42:21

标签: c# object c#-3.0

我们必须实现对象类的方法=> public virtual bool Equals(obj); 而不使用等于或参考等于方法。 它必须与虚拟等于方法相同。

可以使用objA == objB

1 个答案:

答案 0 :(得分:0)

我不会给您一个代码答案,因为毕竟这是一项作业。

您要检查的内容:

  1. 为空-两个对象都为空吗?一个对象是否为空,而另一个不是?

    object.ReferenceEquals(objA, null)是较旧的首选方法(因为它可能不像Equals那样使用覆盖的==实现。对于C#7+,您也可以使用{{1} }。

  2. 您现在可以比较if (objA is null)。请注意,这里是使用if (objA == objB)的地方,但是由于不允许这样做,我想我们可以使用objA.Equals(objB)

还有==表示平等的潜力。我之所以说“潜在的”,是因为两个完全不同的对象可能具有相同的哈希码。如果两个对象相等(并且正确实现),则它们应具有相同的哈希码。简而言之:您可以依靠objA.GetHashCode()来表示相等的可能性,但是您需要进行另一次检查(2)才能确定。

有关GetHashCode()GetHashCode()之间的关系,请参见here。 有关Equals()==的更多信息,请参见here