considerar el Códigoresolución de sobrecarga de métodos virtuales
public class Base
{
public virtual int Add(int a,int b)
{
return a+b;
}
}
public class Derived:Base
{
public override int Add(int a,int b)
{
return a+b;
}
public int Add(float a,float b)
{
return (Int32)(a + b);
}
}
Si creo una instancia de la clase derivada y llamar Añadir a los parámetros de tipo int razón por la que está llamando el método Add con los parámetros de flotación
Derived obj =new Derived()
obj.Add(3,5)
// why this is calling
Add(float a,float b)
¿Por qué no está llamando al método más específico?
¿Cómo sabes que 3 y 5 son int? Intente especificar sus tipos y vea qué sucede. –
¿Cómo lo sabes? –
¿Puedes compilar esto? Puede obtener algunos errores de conversión como float to int? – Anuraj