Виртуальные члены базы не видят переопределений?

Я всегда думал, что base. Что-то было эквивалентно ((Parent) this). Что-то , но, видимо, это не тот случай. Я подумал, что переопределение методов исключило возможность вызова исходного виртуального метода.

Почему третий вывод отличается?

void Main() {
    Child child = new Child();

    child.Method();             //output "Child here!"
    ((Parent)child).Method();   //output "Child here!"
    child.BaseMethod();         //output "Parent here!"
}

class Parent {
    public virtual void Method() { 
        Console.WriteLine("Parent here!"); 
    }
}

class Child : Parent {
    public override void Method() { 
        Console.WriteLine ("Child here!"); 
    }
    public void BaseMethod() { 
        base.Method(); 
    }
}
5
задан recursive 31 August 2010 в 19:19
поделиться