title: Can't convert managed array to IReadOnlyList
body: <p>The following C# code compiles and runs just fine:</p>
  
  <pre><code>private static IReadOnlyList&lt;int&gt; Foo()
  {
      return new int[10];
  }
  </code></pre>
  
  <p>However, the (supposed) equivalent C++/CLI code gives a compile error:</p>
  
  <blockquote>
    <p>Error C2440 'return': cannot convert from 'cli::array&lt;int,1&gt; ^' to 'System::Collections::Generic::IReadOnlyList&lt;int&gt; ^'</p>
  </blockquote>
  
  <pre><code>static IReadOnlyList&lt;int&gt;^ Foo()
  {
      return gcnew array&lt;int&gt;(10);
  }
  </code></pre>
  
  <p>The error message makes it sound as though C++/CLI has its own special array class that it's using under the hood, which is different from what C# does and which doesn't implement IReadOnlyList (or IList, or ICollection; IEnumerable does work, though). Is that correct? Is there a workaround?</p>