Необязательные параметры C # для замещаемых методов

Похоже, что в .NET Framework есть проблема с необязательными параметрами, когда вы переопределяете метод. Результат кода ниже: "BBB" "ааа" . Но ожидаемый результат: "BBB" "BBB" .Есть ли решение для этого. Я знаю, что это можно решить с помощью перегрузки метода, но мне интересно, в чем причина этого. Также код отлично работает в Mono.

class Program
{
    class AAA
    {
        public virtual void MyMethod(string s = "aaa")
        {
            Console.WriteLine(s);
        }

        public virtual void MyMethod2()
        {
            MyMethod();
        }
    }

    class BBB : AAA
    {
        public override void MyMethod(string s = "bbb")
        {
            base.MyMethod(s);
        }

        public override void MyMethod2()
        {
            MyMethod();
        }
    }

    static void Main(string[] args)
    {
        BBB asd = new BBB();
        asd.MyMethod();
        asd.MyMethod2();
    }
}
71
задан Jon Hanna 18 January 2012 в 14:21
поделиться