2010-05-06 20 views

Répondre

10

Ici, vous appelez deux méthodes différentes - Double.Equals(double) et Object.Equals(object). Pour le premier appel, int est implicitement convertible en double, de sorte que l'entrée de la méthode est double et qu'elle effectue un contrôle d'égalité entre les deux double s. Toutefois, pour le deuxième appel, le int est et non étant casté à double, il est seulement encadré. Si vous avez un oeil à la méthode Double.Equals(object) dans le réflecteur, la première ligne est la suivante:

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

donc il retourne faux, comme l'entrée est une int en boîte, pas double en boîte.

Bonne prise!