2010-05-06 15 views

Respuesta

10

Aquí, está llamando a dos métodos diferentes - Double.Equals(double) y Object.Equals(object). Para la primera llamada, int se puede convertir implícitamente en double, por lo que la entrada al método es double y se realiza una comprobación de igualdad entre los dos double s. Sin embargo, para la segunda llamada, int es que no está siendo lanzado a double, solo está en caja. Si usted tiene una mirada en el método Double.Equals(object) en el reflector, la primera línea es:

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

por lo que se vuelve falsa, ya que la entrada es una caja int, no una caja double.

¡Buena captura!