int[] qualifies as IList<T>?
<p>In a different question on stackoverflow somebody suggested to write an extension method for an array, but used the <code>this IList&lt;T&gt;</code> interface in the extension method. I commented it should be an array but he declined. I tested it, and of course, he's right... :)</p>

<p>Extension method:</p>

<pre><code>public static void Fill&lt;T&gt;(this IList&lt;T&gt; array, T value)
{
    for(var i = 0; i &lt; array.Count; i++) 
    {
        array[i] = value;
    }
}
</code></pre>

<p>Test code:</p>

<pre><code>[Test] 
public void Stackoverflow()
{
    int[] arr = new int[] { 1,2,3,4};
    arr.Fill(2);
    Assert.AreEqual(2, arr[0]);
    Assert.AreEqual(2, arr[1]);
    Assert.AreEqual(2, arr[2]);
    Assert.AreEqual(2, arr[3]);
}
</code></pre>

<p>An <code>array</code> is not an <code>IList&lt;T&gt;</code>. Why does this even compile? Let alone, pass?!</p>
