title: Ambiguity with inheriting an optional-parameter base method
body: <p>I have a base class with one optional default parameter, which a child class automatically provides a value for:</p>
  
  
  
  <pre><code>public class Merchant
  {
      public string WriteResults(List&lt;string&gt; moreFields = null)
      {
  
          List&lt;string&gt; ListOfObjects = new List&lt;string&gt;() {Name, Address};
          if (moreFields != null)
          {
              ListOfObjects.AddRange(moreFields);
          }
              return ListOfObjects.ToString() //not real output
  }
  
  
  public class SpecificMerchant : Merchant 
  {   
      new public string WriteResults()
          {
              return ((Merchant)this).WriteResults(new List&lt;string&gt;() {
                      Address, Phone //class-specific parameters
              });
          }
  }
  </code></pre>
  
  <p>I used the <code>new</code> keyword when calling <code>SpecificMerchant.WriteResults</code> because both the parent and the base can take no parameters, but the compiler says this is unnecessary:</p>
  
  <blockquote>
    <p>The member 'SpecificMerchant.WriteResults()' does not hide an
    inherited member. The new keyword is not required.</p>
  </blockquote>
  
  <p>Why? Aren't I, in practice, overriding the parent method?</p>