原文地址→http://www.cnblogs.com/zbphot/archive/2011/11/04/2235933.html
 IList接口→表示可按照索引单独访问的对象的非泛型集合。
 IList 泛型接口是 ICollection 接口的子代,并且是所有非泛型列表的基接口。
IList 实现有三种类别:只读、固定大小、可变大小。无法修改只读 IList。
固定大小的 IList 不允许添加或移除元素,但允许修改现有元素。
可变大小的 IList 允许添加、移除和修改元素。--摘自msdn
-----
并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList可以胜任。
 List 泛型类→ 表示可通过索引访问的对象的强类型列表。
提供用于对列表进行搜索、排序和操作的方法。 !!!注意:此类在 .NET Framework 2.0 版中是新增的。 --摘自msdn
  List 类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList 泛型接口。
List 类既使用相等比较器又使用排序比较器。
List 不保证是排序的。在执行要求 List 已排序的操作(例如 BinarySearch)之前,您必须对 List 进行排序。
可使用一个整数索引访问此集合中的元素。此集合中的索引从零开始。
List 接受 空引用(在 Visual Basic 中为 Nothing) 作为引用类型的有效值并且允许有重复的元素。--摘自msdn
根据msdn给出的定义:
很明显的一点就是
*IList<T>是个接口
*List<T>是一个类,泛型类
 *原文中我觉得是精华部分
IList <>是个接口,定义了一些操作方法这些方法要你自己去实现,
List <>是泛型类,它已经实现了IList <>定义的那些方法
IList IList11 =new List ();
List List11 =new List ();
这两行代码,从操作上来看,实际上都是创建了一个List对象的实例,也就是说,他们的操作没有区别。
只是用于保存这个操作的返回值变量类型不一样而已。
那么,我们可以这么理解,这两行代码的目的不一样。
List List11 =new List ();
是想创建一个List,而且需要使用到List的功能,进行相关操作。
而IList IList11 =new List ();
只是想创建一个基于接口IList的对象的实例,只是这个接口是由List实现的。
所以它只是希望使用到IList接口规定的功能而已。
 接口实现松耦合...有利于系统的维护与重构...优化系统流程...鼓励使用接口,
这样可以实现功能和具体实现的分离.
 当我们都去遍历IList和List的时候,注意我取的数据是1~1000之间,经过反复测试,IList的效率确实是要低一些。那就更不用说数据量更大的时候...
 突然想起小学时期...
老师动不动就让我们抄课文...
最早的一些猿前辈据说也是在纸上手写代码...
没事抄抄msdn中的例子吧,应该不错...
总是说得多,做起来少...

基础知识系列☞IList ←vs→ List的更多相关文章

  1. C# 基础知识系列- 3 集合数组

    简单的介绍一下集合,通俗来讲就是用来保管多个数据的方案.比如说我们是一个公司的仓库管理,公司有一堆货物需要管理,有同类的,有不同类的,总而言之就是很多.很乱.我们对照集合的概念对仓库进行管理的话,那么 ...

  2. 基础知识系列☞C#中→属性和字段的区别

    "好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···" 其实本来准备叫"面试系列"... 字段.属性.你先知道的哪个概念? ***我 ...

  3. 基础知识系列☞Abstract和Virtual→及相关知识

    转载地址→http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的 ...

  4. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  5. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  6. C# 基础知识系列- 9 字符串的更多用法(一)

    0. 前言 在前面的文章里简单介绍了一下字符串的相关内容,并没有涉及到更多的相关内容,这一篇将尝试讲解一下在实际开发工作中会遇到的字符串的很多操作. 1. 创建一个字符串 这部分介绍一下如何创建一个字 ...

  7. C# 基础知识系列- 10 反射和泛型(二)

    0. 前言 这篇文章延续<C# 基础知识系列- 5 反射和泛型>,继续介绍C#在反射所开发的功能和做的努力.上一篇文章大概介绍了一下泛型和反射的一些基本内容,主要是通过获取对象的类型,然后 ...

  8. C# 基础知识系列- 12 任务和多线程

    0. 前言 照例一份前言,在介绍任务和多线程之前,先介绍一下异步和同步的概念.我们之间介绍的知识点都是在同步执行,所谓的同步就是一行代码一行代码的执行,就像是我们日常乘坐地铁通过安检通道一样,想象我们 ...

  9. C# 基础知识系列-13 常见类库(三)

    0. 前言 在<C# 基础知识系列- 13 常见类库(二)>中,我们介绍了一下DateTime和TimeSpan这两个结构体的内容,也就是C#中日期时间的简单操作.本篇将介绍Guid和Nu ...

随机推荐

  1. oracle的resetlogs机制浅析(转)

    文章转自:http://blog.csdn.net/wyzxg/article/details/5869543 alter database open resetlogs 这个命令我想大家都很熟悉了, ...

  2. Cacheable key collision with DefaultKeyGenerator

    The default is to use the hashcode of each parameter and create another (32-bit) hash code. Obviousl ...

  3. HDU 4757 Tree

    传送门 Tree Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) Prob ...

  4. django入门记录 1

    步骤: 1  安装python和django 2  创建项目python-admin startproject mysite(此处可以替换) 3  至少需要一个数据表,所以要创建一个表 python ...

  5. Negative log-likelihood function

    Softmax function Softmax 函数 \(y=[y_1,\cdots,y_m]\) 定义如下: \[y_i=\frac{exp(z_i)}{\sum\limits_{j=1}^m{e ...

  6. Linux命令(31):zip/unzip命令-打包压缩

    zip命令功能说明    zip程序即是文件压缩工具也是文件归档工具,可以对文件或者目录进行压缩或解压,压缩格式为zip.在Linux系统中,gzip才是主要的压缩指令,而bzip2仅次之.Linux ...

  7. 前端必备:FastStoneCapture 和 Licecap

    前端必备:FastStoneCapture 和 Licecap FastStoneCapture这个软件非常小,只有2M多,并且其功能很强大,包括截图,录制视频,量尺,取色等等,对于前端工程师绝对是必 ...

  8. segmentfault.com mongo出识以及对数组的操作

    https://segmentfault.com/a/1190000003951602 首先推荐个工具,no-sql-manager-for-mongodb-professional,虽然收费,但是每 ...

  9. JAVA通过md5方法进行加密

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /* * MD5 算法 * */ ...

  10. Linux bash 中,如何将正常信息和错误信息输出到文件

    问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdou ...