(转)Ilist 和list的区别归纳总结
常见问题:
Ilist <> 本身只是一个泛型接口, 既然是接口当然不能实例化,只能用如下方法
IList <Class1> IList11 =new List <Class1>();
但是为什么要这么用呢,为什么不直接用List:
List <Class1> List11 =new List <Class1>();
第一种用法有什么好处。
总结归纳一下:
Ilist <> 是在 .net2.0里面才支持的
好处嘛..比如说human和tiger都有行走的功能,你可以把这些归类到interface中,当你有一个动物的类包括有这两种动物时,你想让他们行走你只需要调一个同样的方法而不管对方是什么类型,具体的行走嘛,人有两个只脚,但有4肢,动物有4条腿,这就是到具体的动物类来实现了,但是他们行走时都是4肢摆动,而且都向前迈出一定的距离(当然是向前走时),所以我认为这些可以归类为行为抽象,具体的一步能迈出多远这依赖于每个具体实现的身高/体长.
使用IList <Class1> IList11 =new List <Class1>();
方便后期的修改,当你不在使用List 要使用其他类型的时候
只需要修改这一处地方就可以了
不用修改过多的 地方
IList <>是个接口,定义了一些操作方法 这些方法要你自己去实现
List <>是个类型 已经实现了IList <>定义的那些方法
List <Class1> List11 =new List <Class1>();
是想创建一个List <Class1>,而且需要使用到List <T>的功能,进行相关操作。
而
IList <Class1> IList11 =new List <Class1>();
只是想创建一个基于接口IList <Class1>的对象的实例,只是这个接口是由List <T>实现的。所以它只是希望使用到IList <T>接口规定的功能而已。
接口实现松耦合...有利于系统的维护与重构...优化系统流程...
鼓励使用接口
这样可以实现功能和具体实现的分离
实现接口分离的原则
不是看实际需要用的!
(转)Ilist 和list的区别归纳总结的更多相关文章
- ASP.NET的GET和POST方式的区别归纳总结
表单提交中,ASP.NET的Get和Post方式的区别归纳如下 几点: 1. get是从服务器上获取数据,post是向服务器传送数据. 2. get是把参数数据队列加到提交表单的ACTION属性所指 ...
- 【转载】我也说 IEnumerable,ICollection,IList,List之间的区别
做C#的同学们,都知道,一类只能有一个继承类,但可以实现多个接口.这句话就告诉我们:IEnumerable,ICollection,IList,List区别了 首先我看看 IEnumerable: / ...
- 浅析IList与List的区别
List和IList是.net开发中经常遇到的两种类型,用法上经常会让初学者摸不到头脑,下面简要的分析一下这两种类型的区别 1.IList<T>是接口,继承自ICollection< ...
- IEnumerable,ICollection,IList,List之间的区别
做C#的同学们,都知道,一类只能有一个继承类,但可以实现多个接口.这句话就告诉我们:IEnumerable,ICollection,IList,List区别了 // 摘要: // 公开枚举器,该枚举器 ...
- .NET重构(二):ArrayList,List,IList的联系和区别
导读:在机房重构的时候,为了降低耦合,不能返回DataTable型数据,而需要转换为泛型集合.我一直使用的就是IList,那天师傅过来帮我挑错,问我:你为什么一直写IList呢,不应该是List吗?好 ...
- IList与List的区别
List是一个类(Class),IList是一个接口(Interface),不能被实例化,只能用 IList <T> myIList =new List <T>(); List ...
- ORACLE和SQL语法区别归纳
数据类型比较类型名称 Oracle SQLServer 比较字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb ...
- C# —— IList, ArrayList与List的区别详解
共同点: IList, List , ArrayList 通俗一点来讲就是广义的数组,C#里面称之为集合.不同于一般的狭义的数组,它们可以存放任意类型的东西,在申明或者赋值的时候指定. 比如你写 ...
- C#中IEnumerable、ICollection、IList、IQueryable 、IQueryable 、List之间的区别
一:一个简单的例子 int[] myArray = { 1, 32, 43, 343 }; IEnumerator myie = myArray.GetEnumerator(); myie.Reset ...
随机推荐
- SQL Server中CURD语句的锁流程分析
我只在数据库选项已开启“行版本控制的已提交读”(READ_COMMITTED_SNAPSHOT为ON)中进行了观察. 因此只适用于这种环境的数据库. 该类数据库支持四种不同事务隔离级别,下面分别观察数 ...
- vijosP1210 盒子与球
vijosP1210 盒子与球 链接:https://vijos.org/p/1210 [思路] Stirling+全排列. 因为第二类stirling所求是没有标明盒子顺序的方案数,所以最后需要乘一 ...
- Linux vim的一些命令
一.vi/vim的多行注释及取消注释 1.多行注释 (1) 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来 (2) 按大写字母 ...
- python seq
missing parentheses in call to print ==> python高版本 print("") name 'raw_input' is not d ...
- 扫描线专题 hdu1255
hdu1255 求覆盖至少两次的面积,和直接求覆盖面积比,就是保证cover>1就可以了. 没有进行lazy操作,因为每一次更新伴随着询问,感觉没有必要.982MS水过. #include &l ...
- 注册表-恶意首页追踪之旅(IE不能改主页)
恶意首页追踪之旅(先说下,360无法修复这个恶意首页) 话说,今天下了个扫站的工具,结果一不小心中了恶意广告! 中招后不停的乱下东西安装,360不停的在那弹出提示! 无语了,一个个卸载,把C:\win ...
- 利用ACE 自己实现的线程池
1: 线程池组件的配置文件: [log] ;DEBUG = 0 ;INFO = 1 ;WARN = 2 ;FAULT = 3 level=0 ;SCREENOUT = 0 ;FILEOUT = 1 ; ...
- java多态/重载方法——一个疑难代码引发的讨论
直接上代码,看这个代码发现自己的基础有多差了.参考 http://www.cnblogs.com/lyp3314/archive/2013/01/26/2877205.html和http://hxra ...
- C++下字符串转换
引用自:http://blog.sina.com.cn/s/blog_a98e39a20101ari9.html 把最近用到的各种unicode下类型转换总结了一下,今后遇到其他的再补充: 1.str ...
- org.openqa.selenium.remote.SessionNotFoundException: The FirefoxDriver cannot be used after quit() was called.
该问题已经困扰了我很多天 问题终于解决了,全局变量导致的,碰到这种问题很难再自己本身的机器上发现错误,所以,应该看一下自己写的方法是否涉及到了全局变量出现不一致的情况,让其统一即可.