Why doesn't C# allow implicit reference conversions from an interface-type to class-type?
<p>Given:</p>

<pre><code>public class T 
{
    public static implicit operator T(R r)
    {
        return new T();
    }
}

public class S: R { }
public class R { }
</code></pre>

<p>If R were an interface, the code would not compile:</p>

<blockquote>
  <p>user-defined conversions to or from an interface are not allowed</p>
</blockquote>

<p>Interfaces are essentially public/internal classes with all public members and no implementation.  So what is the purpose of having this restriction?</p>
