2010-05-06 48 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

好抓!