title: Directly modifying List<T> elements
body: <p>I have this struct:</p>
  
  <pre><code>struct Map
  {
      public int Size;
  
      public Map ( int size )
      {
          this.Size = size;
      }
  
      public override string ToString ( )
      {
          return String.Format ( "Size: {0}", this.Size );
      }
  }
  </code></pre>
  
  <p>When using array, it works:</p>
  
  <pre><code>Map [ ] arr = new Map [ 4 ] {
      new Map(10),
      new Map(20),
      new Map(30),
      new Map(40)};
  
  arr [ 2 ].Size = 0;
  </code></pre>
  
  <p>But when using List, it doesn't compile:</p>
  
  <pre><code>List&lt;Map&gt; list = new List&lt;Map&gt; ( ) {
      new Map(10),
      new Map(20),
      new Map(30),
      new Map(40)};
  
  list [ 2 ].Size = 0;
  </code></pre>
  
  <p>Why?</p>