title: Implicit conversion from ICollection<T> to IEnumerable<T>
body: <p><code>ICollection&lt;T&gt;</code> implement <code>IEnumerable&lt;T&gt;</code> and something like this is valid:</p>
  <pre><code>ICollection&lt;Computer&gt; Computers {get; set;}
  IEnumerable&lt;Computer&gt; Retrieve() =&gt; Computers;
  </code></pre>
  <p>But why does the compiler state that implicit conversion is not possible in the following scenario?</p>
  <pre><code>ICollection&lt;Computer&gt; Computers {get; set;}
  
  // Error below
  // Cannot implicitly convert from Task&lt;ICollection&lt;Computer&gt;&gt; to Task&lt;IEnumerable&lt;Computer&gt;&gt;
  Task&lt;IEnumerable&lt;Computer&gt;&gt; RetrieveAsync() =&gt; Task.FromResult(Computers);
  </code></pre>
  <p>In order for this to work, I need to call <code>Task.FromResult(Computers.AsEnumerable())</code></p>
  <p>The question is ... why? <code>ICollection&lt;Computer&gt;</code> is clearly a <code>IEnumerable&lt;Computer&gt;</code> as well and when it's not wrapped in a <code>Task</code> implicit conversion works absolutely fine, why would wrapping it in a <code>Task</code> change anything at all?</p>