文档章节

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

深圳大道
 深圳大道
发布于 2016/12/29 15:25
字数 423
阅读 21
收藏 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
276
0
IList,ICollection,IEnumerable,IEnumerator,IQueryable

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

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

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

zting科技
2017/01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 自定义登录认证(二)

一、前言 本篇文章将讲述Spring Security自定义登录认证校验用户名、密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Security...

郑清
23分钟前
1
0
php yield关键字以及协程的实现

php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还有另外一种特殊对象,也就是继承...

冻结not
36分钟前
2
0
servlet请求和响应的过程

本文转载于:专业的前端网站➥servlet请求和响应的过程 1.加载 Servlet类被加载到Java虚拟机中,并且实例化。在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一...

前端老手
36分钟前
2
0
golang 1.13 errors 包来了,不用写“err 气功波”代码

引 这篇是对 errors 包 的姿势挖掘 气功波错误代码 从 http.Get()返回的错误 判断 syscall.ECONNREFUSED 错误.以前要对 go 标准库 error 结构有点熟悉,才能写出下面的代码 func CmdErr(err ...

guonaihong
40分钟前
26
0
喜玛拉雅已听书单

时间倒序排 书名 作者 状态 唐砖 孑与2 进行中 死灵之书(克苏鲁神话合集) 阿卜杜拉·阿尔哈萨德 进行中 赡养人类 刘慈欣 完结 赡养上帝 刘慈欣 完结 中国太阳 刘慈欣 完结 中国太阳 刘慈欣...

Alex_Java
41分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部