title: Why is this implemented as a struct?
body: <p>In System.Data.Linq, <code>EntitySet&lt;T&gt;</code> uses a couple of <code>ItemList&lt;T&gt;</code> structs which look like this:</p>
  
  <pre><code> internal struct ItemList&lt;T&gt; where T : class
    {
      private T[] items;
      private int count;
      ...(methods)...
    }
  </code></pre>
  
  <p>(Took me longer than it should to discover this - couldn't understand why the entities field in <code>EntitySet&lt;T&gt;</code> was not throwing null reference exceptions!)</p>
  
  <p>My question is what are the benefits of implementing this as a struct over a class?</p>