title: Is there any reason to declare optional parameters in an interface?
body: <p>You can declare optional parameters in an interface method but implementing classes are not required to declare the parameters as optional, as <a href="https://stackoverflow.com/questions/4922714/why-are-c-4-optional-parameters-defined-on-interface-not-enforced-on-implementin">Eric Lippert explained</a>. Conversely, you can declare a parameter as optional in an implementing class but not in the interface.</p>
  
  <p>So is there any reason to declare optional parameters in an interface? If not, why is it allowed?</p>
  
  <p>Examples:</p>
  
  <pre><code>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) { }
  }
  </code></pre>