How to expose internal System.Array
<p>I have a class that is a container for two fixed length arrays as well as some other members.  I want to expose the elements of the array for assignment outside the class.</p>

<p>Example would be:</p>

<pre><code>    using System.Collections.ObjectModel;

    class ArrayContainer&lt;T, U&gt;
    {
       private T[] x;
       private U[] y;

       // Some other members and constructor

       public Collection&lt;T&gt; X
       {
            get { return new Collection&lt;T&gt;(this.x); }
       }

       public Collection&lt;U&gt; Y
       {
           get { return new Collection&lt;U&gt;(this.y); }
       }
    }
</code></pre>

<p>If I try to do instance.X[i] = value I get an exception saying the collection is readonly.  So I have three questions:</p>

<ol>
<li>Why can't I make the above assignment?</li>
<li>Is this the correct was to expose internal members?</li>
<li>Are there any performance issues with making a "new" Collection every time the array is created?</li>
</ol>
