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());
Take a look at this blog post by Eric Lippert: So many interfaces. He has some great insights, as always
Make sure to read the whole thing, but here’s the quote that answers the question: