欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#中IEnumerable、ICollection、IList、List之间的区别

程序员文章站 2023-11-06 21:36:58
首先我看看 ienumerable: // 摘要: // 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代。 // // 类型参数:...

ienumerable、icollection、ilist、list之间的区别,本文分别分析了它的实现源码,从而总结出了它们之间的关系和不同之处。

首先我看看 ienumerable:

ienumerable<t> 实现ienumerable接口方法,那ienumberable做什么的,其实就提高可以循环访问的集合。说白了就是一个迭代。

再来看看icollection:

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

我们继续看ilist:

ilist 继承它们三个接口,怪不得功能这么多啊

最后来看看list:

它们都是接口,只有list 是类,不仅实现它们的接口,而且还扩展了太多的方法给我利用,几乎所有功能都能实现了。

按照功能排序:list<t> 《ilist<t> 《icollection<t>《ienumerable<t>

按照性能排序:ienumerable<t>《icollection<t>《ilist<t>《list<t>

另一种解释:

icollection 接口是 system.collections 命名空间中类的基接口,icollection 接口扩展 ienumerable,idictionary 和 ilist 则是扩展 icollection 的更为专用的接口。如果 idictionary 接口和 ilist 接口都不能满足所需集合的要求,则从 icollection 接口派生新集合类以提高灵活性。

icollection是ienumerable的加强型接口,它继承自ienumerable接口,提供了同步处理、赋值及返回内含元素数目的功能

一、icollection接口的原型

二、ienumerable接口

1、ienumerable接口是icollection的父接口,凡实现此接口的类,都具备“可迭代”的能力。

2、ienumerable接口只定义了一个方法:getenumerator,该方法将返回一个“迭代子”对象(或称为迭代器对象),是一个实现了ienumerator接口的对象实例。

3、凡是实现了ienumerable接口的类,都可以使用foreach循环迭代遍历。

三、简单的icollection实现范例

四、icollection<t>

icollection<t>是可以统计集合中对象的标准接口。该接口可以确定集合的大小(count),集合是否包含某个元素(contains),复制集合到另外一个数组(toarray),集合是否是只读的(isreadonly)。如果一个集合是可编辑的,那么可以调用add,remove和clear方法操作集合中的元素。因为该接口继承ienumerable<t>,所以可以使用foreach语句遍历集合。

icollection<t>定义源码

到此这篇关于c#中ienumerable、icollection、ilist、list之间的区别的文章就介绍到这了,更多相关c# ienumerable、icollection、ilist、list内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!