Почему «новый» метод блокирует переопределение?C#

Место общения программистов C#
Anonymous
Почему «новый» метод блокирует переопределение?

Сообщение Anonymous »

Код: Выделить всё

public class A
{
public virtual void Write() { Console.Write("A"); }
}
public class B : A
{
public override void Write() { Console.Write("B"); }
}
public class C : B
{
new public virtual void Write() { Console.Write("C"); }
}
public class D : C
{
public override void Write() { Console.Write("D"); }
}

// ...
D d = new D();
C c = d;
B b = c;
A a = b;
d.Write();
c.Write();
b.Write();
a.Write();
Почему выходные данные имеют вид DDBB, а не DDDD?
Почему D Write() не переопределяет B Write(), если фактический объект, который b ссылка - это D?

Подробнее здесь: https://stackoverflow.com/questions/786 ... overriding

Вернуться в «C#»