此问题与==
和Equals
之间的差异无关。这是关于为什么他们的设计不同。
我们知道差异会导致许多问题,这些问题一定很容易被发现:
Equals
和==
会为同一实体的两个实例产生不同的结果。==
在比较子类时产生不同的结果,因为==
不是多态的答案 0 :(得分:3)
简短的回答是,C#语言设计团队和.NET框架设计团队无法就如何最好地比较值/对象的相同性达成一致,因此每个人都实现了自己的系统。
有关更具技术性的详细答案,请参阅a blog post on the subject by Eric Lippert。