You can declare optional parameters in an interface method but implementing classes are not required to declare the parameters as optional, as Eric Lippert explained. Conversely, you can declare a parameter as optional in an implementing class but not in the interface.
So is there any reason to declare optional parameters in an interface? If not, why is it allowed?
Examples:
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) { } }
Example:
public interface IService1 { void MyMethod(string text, bool flag = true); } public class MyService1a : IService1 { public void MyMethod(string text, bool flag) { } }
Usage:
IService1 ser = new MyService1a(); ser.MyMethod("A");
2nd parameter passed to MyService1a
will be true
, as default parameter in interface.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With