文档章节

IEnumerable,ICollection,IList,List之间的区别

深圳大道
 深圳大道
发布于 2016/12/29 15:31
字数 423
阅读 0
收藏 0

做C#的同学们,都知道,一类只能有一个继承类,但可以实现多个接口。这句话就告诉我们:IEnumerable,ICollection,IList,List区别了

// 摘要:
//     公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代。
//
// 类型参数:
//   T:
//     要枚举的对象的类型。
[TypeDependency("System.SZArrayHelper")]
public interface IEnumerable<out T> : IEnumerable
{
	// 摘要:
	//     返回一个循环访问集合的枚举器。
	//
	// 返回结果:
	//     可用于循环访问集合的 System.Collections.Generic.IEnumerator<T>。
	IEnumerator<T> GetEnumerator();
}


// 摘要:
//     定义操作泛型集合的方法。
//
// 类型参数:
//   T:
//     集合中元素的类型。
[TypeDependency("System.SZArrayHelper")]
public interface ICollection<T> : IEnumerable<T>, IEnumerable

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable

public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

首先我看看 IEnumerable:
IEnumerable<T> 实现IEnumerable接口方法,那IEnumberable做什么的,其实就提高可以循环访问的集合。说白了就是一个迭代。

再来看看ICollection:
原来ICollection<T> 同时继承IEnumerable<T>和IEnumerable两个接口,按我的理解就是,ICollection继续它们2个接口而且扩展了方法,功能强多了。

我们继续看IList:
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
IList 继承它们三个接口,怪不得功能这么多啊

最后来看看List:
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
这个时候大家仔细看看,它们都是接口,只有List 是类,不仅实现它们的接口,而且还扩展了太多的方法给我利用。几乎所有功能都能实现了.

按照功能排序:List<T> 》IList<T> 》ICollection<T>》IEnumerable<T>
按照性能排序:IEnumerable<T>》ICollection<T>》IList<T>》List<T>


本文转载自:http://blog.csdn.net/smartsmile2012/article/details/51728383

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
ObservableCollection和List的区别总结

一、继承的类和接口,还有它们的方法不同 1)ObservableCollection比较简单,继承了Collection, INotifyCollectionChanged, INotifyPropertyChanged   Collection:为泛型集合提供基类。 ...

andrewniu
2018/05/29
0
0
c#中的IEnumerable ,ICollection,IList,IQueryable, List 你真的懂了吗?

IEnumerable Namespace: System.Collections 最基本的列表容器,连列表项Count都不能获取 允许遍历, 但不允许添加、删除、更新列表项 支持使用where linq查询 ICollection Namespace: Syste...

Angeladaddy
03/12
0
0
最全数据结构详述: List VS IEnumerable VS IQueryable VS ICo

本文对常用的数据结构详述:Array, ArrayList,List,IList,ICollection, Stack, Queue, HashTable, Dictionary, IQueryable, IEnumerable。 Collection(集合) Collection是数据记录集合,......

葡萄城控件技术团队
2015/11/06
0
0
IList,ICollection,IEnumerable,IEnumerator,IQueryable

IList 是 ICollection 接口的子代,并且是所有非泛型列表的基接口。IList 实现有三种类别:只读、固定大小和可变大小。无法修改只读 IList。固定大小的 IList 不允许添加或移除元素,但允许修...

随智阔
2012/08/08
0
0
最近遇到个关于接口的奇怪的问题

接口的作用众所周知了,而且C#的接口,必须明确两点: 1.必须实现接口中定义的方法、属性等,原型必须一样(返回值类型、函数名,参数类型) 2.实现接口的类中必须使用public修饰符 那我们下...

zting科技
2017/01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部