title: Is List<T> really an undercover Array in C#?
body: <p>I have been looking at .NET libraries using ILSpy and have come across <code>List&lt;T&gt;</code> class definition in <code>System.Collections.Generic</code> namespace. I see that the class uses methods like this one:</p>
  
  <pre><code>// System.Collections.Generic.List&lt;T&gt;
  /// &lt;summary&gt;Removes all elements from the &lt;see cref="T:System.Collections.Generic.List`1" /&gt;.&lt;/summary&gt;
  public void Clear()
  {
      if (this._size &gt; 0)
      {
          Array.Clear(this._items, 0, this._size);
          this._size = 0;
      }
      this._version++;
  }
  </code></pre>
  
  <p>So, the <code>Clear()</code> method of the <code>List&lt;T&gt;</code> class actually uses <code>Array.Clear</code> method. I have seen many other <code>List&lt;T&gt;</code> methods that use Array stuff in the body. </p>
  
  <p>Does this mean that <code>List&lt;T&gt;</code> is actually an undercover Array or List only uses some part of Array methods?</p>
  
  <p>I know lists are type safe and don't require boxing/unboxing but this has confused me a bit.</p>