Похоже, что в .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();
}
}