title: Virtual method called from derived instead of base
body: <p>Can someone explain to me why is the overridden method being called when I cast the class into the base one:</p>
  
  <pre><code>    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();
      }
  </code></pre>
  
  <p>I mean this code prints:</p>
  
  <pre><code>Overriden method
  </code></pre>
  
  <p>and not </p>
  
  <pre><code>Base virtual method
  </code></pre>
  
  <p>Its a run-time or compile-time future?</p>
  
  <p>I know i can call the Base's virtual method from the derived by calling <code>base.VirtualMethod()</code> but can I call it from outside? (like from <code>Main</code> or some other class)</p>