Разрешение перегрузки виртуальных методов

Рассмотрим код

public class Base
{
   public virtual int Add(int a,int b)
   {
      return a+b;
   }
}

public class Derived:Base
{
   public override int Add(int a,int b)
   {
      return a+b;
   }

   public int Add(float a,float b)
   {
      return (Int32)(a + b);
   }
}

Если я создаю экземпляр класса Derived и вызываю Add с параметрами типа int, почему он вызывает метод Add с параметрами типа float

Derived obj =new Derived()
obj.Add(3,5)

// why this is calling 
Add(float a,float b)

Почему он не вызывает более конкретный метод ?

11
задан Ashley John 25 August 2011 в 14:24
поделиться