title: Covariant in .net 3.5
body: <p>I'm learning more about this world.
  And in my tests, I found this strange:</p>
  
  <pre><code>    [TestMethod]
      public void VarianceTest()
      {
          List&lt;string&gt; listValues = new List&lt;string&gt;();
          string[] arrayValues = listValues.ToArray();
          var result = HelperCoVariant.GetTest&lt;int&gt;(listValues); // error to compile
          var result2 = HelperCoVariant.GetTest&lt;int&gt;(arrayValues); // sucess
      }
  </code></pre>
  
  <p>Any Method:</p>
  
  <pre><code>public static class HelperCoVariant
  {
      public static IEnumerable&lt;T&gt; GetTest&lt;T&gt;(this IEnumerable&lt;object&gt; t)
      {
          foreach (var item in t)
          {
              yield return (T)item;
          }
      }
  }
  </code></pre>
  
  <p>I understand that the. NET 4 that works perfectly because of </p>
  
  <blockquote>
    <p><code>IEnumerable&lt;out T&gt;</code></p>
  </blockquote>
  
  <p>But why on. NET 3.5, there is this behavior?</p>