Virtuelle Methode, die von abgeleitet anstelle von base aufgerufen wird

Kann mir jemand erklären, warum die überschriebene Methode aufgerufen wird, wenn ich die Klasse in die Basis-Klasse umsetze:

    class Base
    {
        public virtual void VirtualMethod()
        {
            Console.WriteLine("Base virtual method");
        }
    }

    sealed class Derived : Base
    {
        public override void VirtualMethod()
        {
            Console.WriteLine("Overriden method");
        }
    }

    static void Main(String[] args)
    {
        Derived d = new Derived();
        ((Base)d).VirtualMethod();
    }

Ich meine, dieser Code druckt:

Overriden method

und nicht

Base virtual method

Es ist eine Laufzeit- oder Kompilierzeit-Zukunft?

Ich weiß, dass ich die virtuelle Methode der Basis aus der durch Aufruf abgeleiteten aufrufen kannbase.VirtualMethod() aber kann ich es von außen anrufen? (wie vonMain oder eine andere Klasse)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage