title: Why array implements IList?
body: <p>See the definition of <em>System.Array</em> class</p>
  
  <pre><code>public abstract class Array : IList, ...
  </code></pre>
  
  <p>Theoretically, I should be able to write this bit and be happy</p>
  
  <pre><code>int[] list = new int[] {};
  IList iList = (IList)list;
  </code></pre>
  
  <p>I also should be able to call any method from the iList</p>
  
  <pre><code> ilist.Add(1); //exception here
  </code></pre>
  
  <p>My question is not why I get an exception, but rather <strong>why Array implements IList</strong>?</p>