 <p>It's needed in this case because C# does not support return type co-variance for interfaces, so your function</p> <pre><code>public Foo Bar() { //... } </code></pre> <p>does not satisfy the <code>IFoo</code> interface since the return type of the <code>Bar</code> method is different.</p> <p>Since you want to also implement the interface, your only choice is to do so explicitly since you already have a <code>Bar()</code> method defined on the class.</p>