(转)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 ...
随机推荐
- iOS 开发者计划申请 2014 年最新心得[转]
iOS 开发者计划申请 2014 年最新心得 http://myfairland.net/ios-developer-program/
- javascript点击图片放大的功能(原生)
使用的图片: 1.jpg <!doctype html> <html lang="en"> <head> <meta charset=&q ...
- lihgtoj 1006
记忆化搜索下即可. #include<cstdio> #include<string> #include<cstring> #include<iostream ...
- ACM 2015年上海区域赛A题 HDU 5572An Easy Physics Problem
题意: 光滑平面,一个刚性小球,一个固定的刚性圆柱体 ,给定圆柱体圆心坐标,半径 ,小球起点坐标,起始运动方向(向量) ,终点坐标 ,问能否到达终点,小球运动中如果碰到圆柱体会反射. 学到了向量模板, ...
- HDU 1754 I Hate It 线段树 单点更新 区间最大值
#include<iostream> #include<string> #include<algorithm> #include<cstdlib> #i ...
- WCF入门到精通(二)——契约
第一次接触WCF,如有写的不对的地方有望大家指出来,谢谢!! 本篇文章主要说下WCF中的契约的种类.契约的种类.如何定义契约等内容. 契约是一种双边或多边的协议,是利益相关方就某个问题达成的一种共识, ...
- xp系统下网络打印机怎么设置
亲测,可行 打印机共享可以有效节约办公资源,提高办公效率.可是还有很多朋友不知道怎么设置,我们这里讲一下网络打印机的设置方法. 1.我们点开桌面左下角的开始菜单,选择“打印机和传真” 2.我们右击某个 ...
- 页面置换算法(最佳置换算法、FIFO置换算法、LRU置换算法、LFU置换算法)
页面置换产生的原因是:分页请求式存储管理(它是实现虚拟存储管理的方法之一,其中一个特性是多次性-->多次将页面换入或换出内存) 效果最好的页面置换算法:最佳置换算法 比较常用的页面置换算法有:F ...
- POJ3461–Oulipo(KMP)
题目大意 给定一个文本串和模式串,求模式串在文本串中出现的次数 题解 正宗KMP 代码: #include<iostream> #include<cstring> #inclu ...
- [JSOI2008]星球大战
正向进行很显然很BT, 所以逆向离线此题是个不错的选择. 使用并查集统计劫难之后的联通状态, 然后逐个添加结点即可. #include <stdio.h> #include <std ...