说说C#中IList与List区别
区别:
首先IList泛型接口是ICollection泛型接口的子代,并且是所有泛型列表的基接口。
它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList<T>可以胜任。不过,更多的时候,要对集合数据进行处理,从中筛选数据或者排序。这个时候IList<T>就爱莫能助了。
1、当使用接口的方法时,ILis<>这种方式比较好。它不获取实现这个接口的类的其它方法和字段,有效的节省空间。
2、定义不同:
IList<>是个接口,定义了一些操作方法这些方法要自己去实现
List<>是泛型类,它已经实现了IList<>定义的那些方法
1)、IList<Class1>IList11=newList<Class1>();
2)、List<Class1>List11=newList<Class1>();
这两行代码,从操作上来看,实际上都是创建了一个List<Class1>对象的实例,也就是说,它们的操作没有区别。只是用于保存这个操作的返回值变量类型不一样而已。这两行代码的目的不一样。
如:List<Class1>List11=newList<Class1>();
是想创建一个List<Class1>,而且需要使用到List<T>的功能,进行相关操作。
而:IList<Class1>IList11=newList<Class1>();
只是想创建一个基于接口IList<Class1>的对象的实例,只是这个接口是由List<T>实现的。所以它只是希望使用到IList<T>接口规定的功能而已
扩展资料:
List领域简介
与set不同,列表通常允许重复的元素。更确切地讲,列表通常允许满足e1.equals(e2)的元素对e1和e2,并且如果列表本身允许null元素的话,通常它们允许多个null元素。难免有人希望通过在用户尝试插入重复元素时抛出运行时异常的方法来禁止重复的列表,但我们希望这种用法越少越好。
List接口在iterator、add、remove、equals和hashCode方法的协定上加了一些其他约定,超过了Collection接口中指定的约定。为方便起见,这里也包括了其他继承方法的声明。
List接口提供了4种对列表元素进行定位(索引)访问方法。列表(像Java数组一样)是基于0的。注意,这些操作可能在和某些实现(例如LinkedList类)的索引值成比例的时间内执行。因此,如果调用者不知道实现,那么在列表元素上迭代通常优于用索引遍历列表。
List接口提供了特殊的迭代器,称为ListIterator,除了允许Iterator接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。
List接口提供了两种搜索指定对象的方法。从性能的观点来看,应该小心使用这些方法。在很多实现中,它们将执行高开销的线性搜索。
List接口提供了两种在列表的任意位置高效插入和移除多个元素的方法。
参考资料:
百度百科——list(计算机专业术语)
百度百科——arraylist
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!