(转)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 ...
随机推荐
- 使用PowerDesigner建立数据库模型
转自:http://www.cnblogs.com/tonyepaper/archive/2008/02/12/1067260.html 1. 打开PowerDesigner,点击File ...
- JAX-RS -- Java API for RESTful Web Services
Java EE 6 引入了对 JSR-311 的支持.JSR-311(JAX-RS:Java API for RESTful Web Services)旨在定义一个统一的规范,使得 Java 程序员可 ...
- Android之parseSDKContent failed
由于之前安装ADT之后就一直报parseSDKContent failed的错误,具体的信息为:java.lang.NullPointerException. 此问题的情况为在Eclipse下,And ...
- libcurl断点下载
开发需要写了一个处理curl 下载的c++类,内含有多个静态方法和实例方法,写在这里留给有需求的同学 头文件 CURLHelper.h enum CURLHelperStateType { CURLH ...
- 【转】小解DCT与DFT
这学期当本科生数字图像处理的助教老师,为使学生更好地理解DCF和DFT之间的关系给出三题,大家可以思考一下,看一下自己对这些最简单的变换是否真正理解. 1.求解序列f(n)=[2,3,3,4,4,3, ...
- HDU FatMouse's Speed 基本DP
题意:要求找到的体重递增,速度递减的老鼠,并且输出最长的长度数,而且输出各自的序列数.Special Judge 思路:先按体重由小到大排序,再找最长速度递减序列. 转移方程:mou[i].w> ...
- xp系统下网络打印机怎么设置
亲测,可行 打印机共享可以有效节约办公资源,提高办公效率.可是还有很多朋友不知道怎么设置,我们这里讲一下网络打印机的设置方法. 1.我们点开桌面左下角的开始菜单,选择“打印机和传真” 2.我们右击某个 ...
- Storm系列(十八)事务介绍
功能:将多个tuple组合成为一个批次,并保障每个批次的tuple被且仅被处理一次. storm事务处理中,把一个批次的tuple的处理分为两个阶段processing和commit阶段. proce ...
- C 数据结构1——线性表分析(顺序存储、链式存储)
之前是由于学校工作室招新,跟着大伙工作室招新训练营学习数据结构,那个时候,纯碎是小白(至少比现在白很多)那个时候,学习数据结构,真的是一脸茫然,虽然写出来了,但真的不知道在干嘛.调试过程中,各种bug ...
- [JSOI2008]星球大战
正向进行很显然很BT, 所以逆向离线此题是个不错的选择. 使用并查集统计劫难之后的联通状态, 然后逐个添加结点即可. #include <stdio.h> #include <std ...