让我们考虑Polygon
类。大多数情况下,检查平等是否应该比较参考值,但是在许多情况下,值相等会派上用场(例如,将两个多边形与Assert.AreEqual
进行比较)。应该==运算符与Equals()完全相同吗?
我的想法是使参考平等的价值平等略为次要。在这种情况下,很明显==operator
应该保持其默认引用检查实现。
那么object.Equals()
和IEquatable<Polygon>.Equals()
呢? MSDN并不意味着==
和.Equals()
应该这样做,但仍然 - 它不会使Polygon
对象的行为过于模糊吗?
此外,Polygon
类是可变的。
他们是不一样的.'长期短''.Equals用于对象相等''==用于检查值的相等'做一个谷歌搜索更深入的澄清。为什么人们在这里问问题,他们可以很容易地找到答案买一个简单的谷歌搜索'我只是好奇' – MethodMan
我不会在这里问这个问题的OP错误。我发现,与谷歌搜索相比,搜索引擎是获得知情答案的更有声誉的来源。而且,正如他所说,MSDN并不总是清楚这些事情。 –
@MikeHofer问题不在于*上的主题*。 – Servy