title: In C#, why do interface implementations have to implement a another version of a method explicitly?
body: <p>Take this example:</p>
  
  <pre><code>public interface IFoo
  {
      IFoo Bar();
  }
  
  public class Foo : IFoo
  {
      public Foo Bar()
      {
          //...
      }
  
      IFoo IFoo.Bar() { return Bar(); } //Why is this necessary?
  }
  </code></pre>
  
  <p>Why is the implicit implementation of <code>IFoo Bar()</code> necessary even though <code>Foo</code> converts to <code>IFoo</code> without a cast?</p>