Дано:
interface IFoo
{
void Print(string text = "abc");
}
class Bar : IFoo
{
public void Print(string text = "def")
{
Console.WriteLine(text);
}
}
class Program
{
static void Main(string[] args)
{
Bar b = new Bar();
b.Print();
IFoo f = b as IFoo;
f.Print();
}
}
Вывод:
def
abc
Только я или это немного странно? Первоначально я ожидал "def" в обоих случаях. Однако, если бы это было так, то дополнительные аргументы абстрактные методы были бы бесполезны Но все равно кажется хорошей отправной точкой для неприятных ошибок.