【原】浅析IList与List的区别
List和IList是.net开发中经常遇到的两种类型,用法上经常会让初学者摸不到头脑,下面简要的分析一下这两种类型的区别
1、IList<T>是接口,继承自ICollection<T>和IEnumerable<T>,是所有泛型列表的基接口,其中规定了一些方法声明。
List继承了IList并实现了IList规定的那些方法,同时也实现了许多自定义的新方法。
2、既然IList是接口,就不能用new关键字去直接实例化,但是可以用多态的方式去实例化,也就是用其子类(List)去实例化。
IList<string> Ilist1=new List<string>() (简记作①)
你可能会有疑问,这样作与 List<string> list1=new List<string>() (简记作②) 有什么区别呢?
当然是有区别的:
首先,①创建了一个list,但是这个list只能用到IList接口中规定那些方法,因为这些方法在List类型中实现了的,所以可以用。
②也创建了一个list,这个list可以用List类型中实现的所有方法(当然包括IList规定的那些)
其次,推荐使用哪个呢? 答:①
因为在面向对象的思想里,推荐使用接口,可以实现松耦合,有很好的扩展性,功能与具体实现很好的分离开,有利于系统的维护与重构。
作者:Tony zhao
本文出处:http://www.cnblogs.com/ytaozhao 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。