2010-05-06 60 views

回答

10

在这里,你调用两种不同的方法 - Double.Equals(double)Object.Equals(object)。对于第一次调用,int可以隐式转换为double,因此该方法的输入是double,它在两个double之间进行相等性检查。但是,对于第二个电话,int而不是被投到double,它只是被装箱。如果你有反射看看Double.Equals(object)方法,第一行是:

if (!(obj is double)) 
{ 
    return false; 
} 

所以它的返回false,因为输入的是盒装int,不是盒装double

好抓!