zoukankan      html  css  js  c++  java
  • 基础知识系列☞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 总是说得多,做起来少...
  • 相关阅读:
    Segmentation fault (core dumped)
    Missing separate debuginfos, use: debuginfo-install
    Qt学习资源
    Qt学习过程中遇到的问题
    深入浅出MFC--第一章
    MVC – 3.EF(Entity Framework)
    MVC基础知识 – 2.新语法
    js获取url参数值(HTML之间传值)
    解决IIS7、IIS7.5中时间格式显示的问题
    web.config详解 -- asp.net夜话之十一
  • 原文地址:https://www.cnblogs.com/love-zf/p/5565470.html
Copyright © 2011-2022 走看看