其实这个问题可以去MSDN上。
接口有利于系统的扩展。
比如如果你不满意list <t>的功能,那么你可以自己写一个以Ilist<T>为接口的类,那么你的系统的不需要修改逻辑层及以上的程序。只需改变下层你写的初始化的类就行了。
IList 是接口, List 是具体的列表类。
很多其他列表集合类也都实现了IList的接口。
IList<T> list = new List<T>(); 可以
IList list2 = new ArrayList(); 也可以。
read books of Design Patterns
List是具体实现,IList是接口,前者功能相对丰富,而后者可以自定义实现类去扩展IList功能,丰富其功能,所以从适应变化来说,用接口做桩可以更好应对未来需求。