【发布时间】:2013-01-05 16:52:27
【问题描述】:
我一直试图找出这两个操作返回不同值的原因:
-
Double.NaN == Double.NaN返回false -
Double.NaN.Equals(Double.NaN)返回true
我在第一部分有answer,但没有第二部分,也没有“为什么这两个比较返回不同的值”
【问题讨论】:
-
可能是一个愚蠢的评论,但我会说,在案例 1 中,您正在比较值。在案例 2 中,您正在比较参考资料。
-
@jbl 不,您正在比较两种情况下的值 -
doubles 不是引用,您甚至没有装箱,因为System.Double.Equals已超载。 -
@spender OMFG 我应该更好地阅读这个问题!谢谢!
-
@RB。实际上,我怀疑这可能仍然是正确的原因。我会猜到同样的事情。
-
这与引用/值类型无关。这是关于语义的。如果你覆盖
Equals,你必须维护一个合约。看我的回答。