Вы можете объявить необязательные параметры в методе интерфейса, но реализации классов не требуется для объявления параметров как необязательных, как объяснил Эрик Липперт . И наоборот, вы можете объявить параметр как необязательный в реализующем классе, но не в интерфейсе.
Так есть ли причина объявлять необязательные параметры в интерфейсе? Если нет, то почему это разрешено?
Примеры:
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) { }
}