Definition of List
in .net shows it implement various interfaces.
public class List : IList, ICollection, I
In a IList
you can only put the defined(T) type of object in and a IList can contain diffrent types of objects
This code below will not complie because of the AdressInformation is not an valid object in customers List
IList customers = new List();
customers.Add(new Customer());
customers.Add(new AdressInformation());
This code will compile but cast an exception in runtime
IList customers = new List();
customers.Add(new Customer());
customers.Add(new AdressInformation());