Cześć. Nie bardzo rozumiem dlaczego mimo rzutowania na inne klasy otrzymujemy ten sam wynik we wszystkich trzech wywołaniach. Prosiłbym o krótkie wyjaśnienie. Dziękuje.
class A { public virtual string g() { return "A.g"; } }
class B:A { public override string g() { return "B.g"; } }
class C:B { public override string g() { return "C.g"; } }
C c = new C;
B b = c;
A a = b;
Console.WriteLine(a.g() + " - " + b.g() + " - " + c.g()); // C.g - C.g - C.g