este es un código pequeño que muestra los métodos virtuales.Necesita comprender el siguiente código para los métodos virtuales de C#
class A
{
public virtual void F() { Console.WriteLine("A.F"); }
}
class B: A
{
public override void F() { Console.WriteLine("B.F"); }
}
class C: B
{
new public virtual void F() { Console.WriteLine("C.F"); }
}
class D: C
{
public override void F() { Console.WriteLine("D.F"); }
}
class Test
{
static void Main()
{
D d = new D();
A a = d;
B b = d;
a.F();
b.F();
}
}
Este código está imprimiendo el resultado a continuación:
B.F
B.F
No puedo entender por qué a.F() imprimirá B.F?
Pensé que imprimirá DF porque la Clase B anula la F() de Clase A, entonces este método se oculta en la Clase C usando la palabra clave "nueva", luego se anula nuevamente en la Clase D. Así que finalmente DF corsé.
pero no está haciendo eso. ¿Podría explicar por qué está imprimiendo B.F?
Gracias Tilak y todos, ahora lo tengo :-) –