为什么在.net中存在Equals的静态和非静态重载?

Lou*_*hys 1 .net c# equals

为什么有两个重载Equals.NET中的Object类?如果我想要一个自定义相等函数,例如我可以使用集合或字典,我应该覆盖两者(除了GetHashCode),或者它足以覆盖其中一个.

Mic*_*ers 8

您无法覆盖静态版本.

静态版本的原因是您可以在object.Equals(myObject, myOtherObject)不事先检查空值的情况下调用.

在内部,它只检查空值(true如果两个对象都为空则返回),然后委托给myObject.Equals(myOtherObject).所以你需要覆盖非静态Equals方法.

  • 如果他们没有被新手编码员实施,是的.否则他们可能会重新发明轮子并在调用非静态版本之前进行自己的空检查. (2认同)