基础知识系列☞IList ←vs→ List

时间:2023-03-09 17:31:13
基础知识系列☞IList ←vs→ List
原文地址→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中的例子吧,应该不错...
总是说得多,做起来少...