title: Covariant generic parameter
body: <p>I'm trying to understand this but I didn't get any appropriate results from searching.</p>
  <p>In C# 4, I can do</p>
  <pre><code>    public interface IFoo&lt;out T&gt;
      {
  
      }
  </code></pre>
  <p>How is this different from</p>
  <pre><code>    public interface IFoo&lt;T&gt;
      {
  
      }
  </code></pre>
  <p>All I know is the <code>out</code> makes the generic parameter covariant (??).
  Can someone explain the usage of <code>&lt;out T&gt;</code> part with an example? And also why is applicable only for interfaces and delegates and not for classes?</p>
  <p>Sorry if it's a duplicate and close it as such if it is.</p>