2010-05-06 10 views

Antwort

10

Hier Sie anrufen zwei verschiedene Methoden - Double.Equals(double) und Object.Equals(object). Beim ersten Aufruf ist int implizit in double konvertierbar, daher ist die Eingabe für die Methode double und es wird eine Gleichheitsprüfung zwischen den beiden double s durchgeführt. Für den zweiten Anruf wird die int jedoch nicht zu einer double umgewandelt, es wird nur verpackt. Wenn Sie einen Blick auf die Double.Equals(object) Verfahren in Reflektor haben, die erste Zeile ist:

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

so falsch es zurückkehrt, da der Eingang eine Box int, kein boxed double.

Guter Fang!