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