Производный класс с использованием неправильного метода

Я упростил свой код до этого

 internal class Program
{
    private static void Main(string[] args)
    {
        Child d = new Child();
        int i = 100;
        d.AddToTotal(i);

        Console.ReadKey();
    }

    private class Parent
    {
        public virtual void AddToTotal(int x)
        {
            Console.WriteLine("Parent.AddToTotal(int)");
        }
    }

    private class Child : Parent
    {
        public override void AddToTotal(int number)
        {
            Console.WriteLine("Child.AddToTotal(int)");
        }

        public void AddToTotal(double currency)
        {
            Console.WriteLine("Child.AddToTotal(double)");
        }
    }
}

Проблема в том, что это вызывает

public void AddToTotal(double currency)

, хотя я вызываю его с помощью int, и он должен использовать

public override void AddToTotal(int number)

Использование родителя возвращает ожидаемый результат.

 Parent d = new Child();
 int i = 100;
 d.AddToTotal(i);

Обновление:

Спасибо @Jan и @azyberezovsky за указание на спецификацию . Я добавил в базовый класс виртуальный пустой метод, чтобы обойти это.

6
задан Raj Ranjhan 28 March 2012 в 15:26
поделиться