Ваш код будет обрабатываться следующим образом ( Cast to A
и затем вызывать метод Test
):
B b = new B();
((A)b).Test();
((A)b).Test();
Поэтому он вызывает метод базового класса,Если вы используете метод, переопределяющий , вы увидите разные результаты:
public class A
{
public virtual void Test()
{
Console.WriteLine("A");
}
}
public class B : A
{
public override void Test()
{
Console.WriteLine("B");
}
}
Тогда он будет обрабатываться так:
B b = new B();
b.Test();
b.Test();