Possible Duplicate:
Why does (does it really?) List implement all these interfaces, not just IList?
Out of curiosity, what is the reason behind generic List<> implementing non-generic interface IList?
Sample code
IList<int> list = new List<int>();
list.Add(1);
//compiles but ArgumentException thrown at run time
((IList)list).Add(new object());