遵循覆盖 Equals() 和运算符 == 的指南(C# 编程指南),在覆盖 equals(object) 和 equals(type) 时覆盖 gethashcode 似乎是可取的。
据我了解,关于什么是覆盖 Equals 的最佳实现存在无休止的讨论。但是,我仍然希望更好地理解 Equals 概念并自行决定。
我的问题可能有点无聊,但我们开始吧:
- Equals(object) 和 Equals(type) (独立于给定参数)之间的主要区别是什么?
据我了解(我可能完全错了,所以这同时是一个问题):
Equals(object) 是一种内置方法,它(默认情况下)查看对象引用是否相同。Equals(Type) 是您创建的本地方法。所以事实上,你在那个类中拥有的是带有 2 个重载的 Equals 方法。
- 为什么他们要两次检查财产平等?
在等于(对象):
return base.Equals(obj) && z == p.z;
并在equals(type)中:
return base.Equals((TwoDPoint)p) && z == p.z;
为什么建议实现 Equals(type) 方法?
我的大部分问题都在我在问题 1 中的陈述中被说唱。所以请注意任何错误或误导性的论点。另外,请随时添加任何信息,它肯定会有所帮助。
提前致谢