IList
will only expose the methods exposed by the interface IList
IList<int> myList = new List<int>(); </int></int>
List
will expose all members of the List object
List<int> myList = new List<int>(); </int></int>
If you are exposing your class through a library that others will use, you generally want to expose it via interfaces rather than concrete implementations. This will help if you decide to change the implementation of your class later to use a different concrete class. In that case the users of your library will not need to update their code since the interface does not change.
If you are just using it internally, you may not care so much, and using
List<t>;</t>
may be ok.
Look at below links for more information:
http://forums.asp.net/t/1775855.aspx/1[
^]
http://forums.asp.net/t/1231995.aspx/1[
^]
http://oreilly.com/catalog/pnetcomp2/chapter/ch03.pdf[
^]