title: How to explain this behaviour with Overloaded and Overridden Methods?
body: <p>Could anyone be so nice and explain me why this code shows <code>Derived.DoWork(double)</code>. I can come up with some explanations for this behaviour, however I want someone to clarify this for me.</p>
  
  <pre><code>using System;
  
  public class Base
  {
      public virtual void DoWork(int param) {
          Console.WriteLine("Base.DoWork");
      }
  }
  
  public class Derived : Base
  {
      public override void DoWork(int param) {
          Console.WriteLine("Derived.DoWork(int)");
      }
  
      public void DoWork(double param) {
          Console.WriteLine("Derived.DoWork(double)");
      }
  
      public static void Main() {
          int val = 5;
          Derived d = new Derived();
          d.DoWork(val);
      }
  }
  </code></pre>