IEnumerator,IEnumerable,IEnumerableT
1 接口IEnumerator,IEnumerable区别IEnumerable是一个声明式的接口,声明实现该接口的类就是“可迭代的enumerable”,但并没用说明如 何实现迭代器(iterator).其代码实现为:public interface IEnumerable{IEnumerator GetEnumerator();}
而IEnumerator接口是实现式接口,它声明实现该接口的类就可以作为一个迭代器iterator.其代码实现为: public interface IEnumerator{object Current { get; }bool MoveNext();void Reset();} 所以一个collection要支持Foreach进行遍历,就必须实现IEnumerable,并一某种方式返回迭代器对象:IEnumerator 2 IEnumerable,IEnumerable<T>区别 我们可以看一段代码: public interface IEnumerable<out T>:IEnumerable {IEnumerator<T> GetEnumerator(); } 从上面代码可以很清楚知道IEnumerable<T>是IEnumerable接口的泛型版本。 使用泛型,不会强行对值类型进行装箱和拆箱,或引用类型进行向下强制类型转换,使程序性能提高。泛型定义的变量有类型限制,所以泛型提高了程序的类型安全并且提高了代码的重用性。 比如我们常见的IList IList<T>继承自ICollection<T>,ICollection<T>继承自IEnumerable<T>,IEnumerable<T>继承自IEnumerable,所以List<T>实现了IEnumerable<T>接口,也就是实现了IEnumerable接口 所以可以经常看到这样的代码 :public static IEnumerable<T> Filter<T>(IEnumerable<T> ObjectList) { List<T> ResultList = new List<T>(); ..............return ResultList; }
转载于:https://blog.51cto.com/tangqiongqi/1424995
IEnumerator,IEnumerable,IEnumerableT相关推荐
- IEnumerator/ IEnumerable/ yield return/ StartCoroutine 详解
Update逻辑 IEnumerator/ IEnumerable public interface IEnumerable { IEnumerator GetEnumerator(); } publ ...
- C# IEnumerator/IEnumerable
迭代器模式 与 C# IEnumerator/IEnumerable Jul 21, 2018 | 编程 | 阅读 迭代器模式 与 C# IEnumerator/IEnumerable Part1 ...
- C# IEnumerator IEnumerable接口
前言 使用linq的时候大家应该都知道IEnumerable和IEnumerator接口! 解释一下 IEnumerable 它利用 GetEnumerator() 返回 IEnumerator 集 ...
- 2021年了,`IEnumerator`、`IEnumerable`接口还傻傻分不清楚?
IEnumerator.IEnumerable这两个接口单词相近.含义相关,傻傻分不清楚. 入行多年,一直没有系统性梳理这对李逵李鬼. 最近本人在怼着why神的<其实吧,LRU也就那么回事> ...
- [转]那些年我还不懂:IList,ICollection,IEnumerable,IEnumerator,IQueryable
1.首先看一个简单的例子 int[] myArray = { 1, 32, 43, 343 };IEnumerator myie = myArray.GetEnumerator();myie.Rese ...
- IEnumerable和IEnumerator详解
引言 IEnumerable是可枚举的所有非泛型集合的基接口, IEnumerable包含一个方法GetEnumerator(),该方法返回一个IEnumerator:IEnumerator提供通过C ...
- IList,ICollection,IEnumerable,IEnumerator,IQueryable
IList 是 ICollection 接口的子代,并且是所有非泛型列表的基接口.IList 实现有三种类别:只读.固定大小和可变大小.无法修改只读 IList.固定大小的 IList 不允许添加或移 ...
- C# IEnumerator和IEnumerable的区别
C#有很多接口 ,这些接口牵扯一些复杂的算法问题,让很多新手对这些接口很难理解,尤其是IEnumerator和IEnumerable这两个接口,在IEnumeratorIEnumerable会让新手很 ...
- IEnumerable是否应该实现IEnumerable接口
C#2.0的遍历器(Iterator),应该是对Gamma提出的Iterator设计模式的实现.在C#中,如果某个类型继承了接口IEnumerable,或者继承了泛型接口IEnumerable < ...
最新文章
- php判断数组不重复的元素,php从数组中随机选择若干不重复元素
- 如何屏蔽VS2013中的4996错误!
- linux由哪些部分组成,linux内核处于什么位置?,为你介绍一些Linux操作系统的基础知识(一)...
- ASM文件拷贝到本地
- jvm(6)-Class字节码文件结构总结
- C++ STL list构造
- [转]java中的值传递和引用传递
- TX2在Turtlebot测试kobuki
- java中的状态机模式_Java 有限状态机 (设计模式——状态模式)
- mysql 数据增量备份_mysqlmysqldump数据备份和增量备份
- Spring源码阅读之在spring源码中创建一个gradle测试模块
- 一步快速将Smartform转成生成PDF文件
- 固态硬盘性能下降,造成win10卡顿,及解决方法
- 4.凤凰架构:构建可靠的大型分布式系统 --- 透明多级分流系统
- 面试阿里,看这一篇就够了!
- Eureka服务注册中心搭建
- 万能DOS启动盘制作全攻略(转)
- 磁盘清理 磁盘分析 磁盘空间 磁盘大小 可视化【软件】
- srt文件的时间轴平移处理
- 图鸟小程序+前后端开源项目