title: Question about ambiguous calls in C#
body: <p>I have a question that's not really a problem, but something that made me a little curious.</p>
  
  <p>I have a class with two methods in it. One is a static method and the other one is an instance method. The methods have the same name. </p>
  
  <pre><code>public class BlockHeader
  {
      public static BlockHeader Peek(BinaryReader reader)
      {
          // Create a block header and peek at it.           
          BlockHeader blockHeader = new BlockHeader();
          blockHeader.Peek(reader);
          return blockHeader;
      }
  
      public virtual void Peek(BinaryReader reader)
      {
          // Do magic.
      }
  }
  </code></pre>
  
  <p>When I try to build my project I get an error saying:</p>
  
  <blockquote>
    <p>The call is ambiguous between the
    following methods or properties:
    'MyApp.BlockHeader.Peek(System.IO.BinaryReader)'
    and
    'MyApp.BlockHeader.Peek(System.IO.BinaryReader)'</p>
  </blockquote>
  
  <p><strong>I know that the method signatures are virtually the same, but I can't see how I possibly could call a static method directly from an instance member.</strong> </p>
  
  <p>I assume that there is a very good reason for this, but does anyone know what that reason is?</p>