IEnumerable<IMyInterface> Implicitly From Class[] But Not From Struct[]. Why?
<p>Given:</p>

<pre><code>public interface IMyInterface{

}

public class MyClass:IMyInterface{
     public MyClass(){}
}

public struct MyStruct:IMyInterface{
     private int _myField;

     public MyStruct(int myField){_myField = myField;}
}
</code></pre>

<p>Why can I write:</p>

<pre><code>IEnumerable&lt;IMyInterface&gt; myClassImps = new[] {
    new MyClass(),
    new MyClass(),
    new MyClass()
};
</code></pre>

<p>But not:</p>

<pre><code>IEnumerable&lt;IMyInterface&gt; myStructImps = new[]{
    new MyStruct(0),
    new MyStruct(1),
    new MyStruct(2)
};
</code></pre>

<p>Which gives me the following warning:</p>

<p><strong>Error 29  Cannot implicitly convert type 'MyApp.MyNS.MyStruct[]' to 'System.Collections.Generic.IEnumerable&lt;MyApp.MyNS.IMyInterface&gt;'</strong></p>

<p>And must instead be written:</p>

<pre><code>IEnumerable&lt;IMyInterface&gt; myStructImps = new IMyInterface[]{
    new MyStruct(0),
    new MyStruct(1),
    new MyStruct(2)
};
</code></pre>
