См. определение класса System.Array
public abstract class Array : IList, ...
Теоретически, я должен уметь писать этот бит и быть счастливым
int[] list = new int[] {};
IList iList = (IList)list;
Я также должен иметь возможность вызывать любой метод из iList
ilist.Add(1); //exception here
Мой вопрос не в том, почему я получаю исключение, а скорее , почему Array реализует IList?