Вы можете объявлять необязательные параметры в методе интерфейса, но для реализации классов не требуется объявлять параметры как необязательные, как объяснил Эрик Липперт. И наоборот, вы можете объявить параметр как необязательный в классе реализации, но не в интерфейсе.
Так есть ли какая-нибудь причина для объявления необязательных параметров в интерфейсе? Если нет, то почему это разрешено?
Примеры:
public interface IService1
{
void MyMethod(string text, bool flag = false);
}
public class MyService1a : IService1
{
public void MyMethod(string text, bool flag) {}
}
public class MyService1b : IService1
{
public void MyMethod(string text, bool flag = true) { }
}
public interface IService2
{
void MyMethod(string text, bool flag);
}
public class MyService2b : IService2
{
public void MyMethod(string text, bool flag = false) { }
}