我们必须实现对象类的方法=> public virtual bool Equals(obj); 而不使用等于或参考等于方法。 它必须与虚拟等于方法相同。
我可以使用objA == objB
。
答案 0 :(得分:0)
我不会给您一个代码答案,因为毕竟这是一项作业。
您要检查的内容:
为空-两个对象都为空吗?一个对象是否为空,而另一个不是?
object.ReferenceEquals(objA, null)
是较旧的首选方法(因为它可能不像Equals
那样使用覆盖的==
实现。对于C#7+,您也可以使用{{1} }。
您现在可以比较if (objA is null)
。请注意,这里是使用if (objA == objB)
的地方,但是由于不允许这样做,我想我们可以使用objA.Equals(objB)
。
还有==
表示平等的潜力。我之所以说“潜在的”,是因为两个完全不同的对象可能具有相同的哈希码。如果两个对象相等(并且正确实现),则它们应具有相同的哈希码。简而言之:您可以依靠objA.GetHashCode()
来表示相等的可能性,但是您需要进行另一次检查(2)才能确定。
有关GetHashCode()
和GetHashCode()
之间的关系,请参见here。
有关Equals()
与==
的更多信息,请参见here