Я всегда думал, что 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();
}
}