理解 IEnumerable 与 IEnumerator
我们在编码中,经常使用foreach遍历集合,能够遍历的集合必定实现了 IEnumerator接口,IEnumerator接口如下:
1 public interface IEnumerator 2 { 3 // 方法 4 //移到集合的下一个元素。如果成功则返回为 true;如果超过集合结尾,则返回false。 5 bool MoveNext(); 6 // 将集合设置为初始位置,该位置位于集合中第一个元素之前 7 void Reset(); 8 9 // 属性:获取集合中的当前元素 10 object Current { get; } 11 }
要想使用foreach 遍历集合,集合必须继承 IEnumerator接口,实现IEnumerator接口中的方法。
而IEnumerable接口返回一个IEnumerator类型的实例,IEnumerable接口如下:
1 public interface IEnumerable 2 { 3 //IEnumerable只有一个方法,返回可循环访问集合的枚举数。 4 IEnumerator GetEnumerator() ; 5 }
为什么要这样设计呢?IEnumerable体现了做什么,IEnumerator体现了怎么做,符合软件工程中的接口隔离原则。
理解 IEnumerable 与 IEnumerator相关推荐
- Unity 新手入门 如何理解协程 IEnumerator yield
Unity 新手入门 如何理解协程 IEnumerator 本文包含两个部分,前半部分是通俗解释一下Unity中的协程,后半部分讲讲C#的IEnumerator迭代器 协程是什么,能干什么? 为了能通 ...
- [转]那些年我还不懂:IList,ICollection,IEnumerable,IEnumerator,IQueryable
1.首先看一个简单的例子 int[] myArray = { 1, 32, 43, 343 };IEnumerator myie = myArray.GetEnumerator();myie.Rese ...
- C# IEnumerable和IEnumerator的区别,如何实现
IEnumerable接口和IEnumerator接口是.NET中非常重要的接口,二者有何区别? 1. 简单来说IEnumerable是一个声明式的接口,声明实现该接口的类就是"可迭代的en ...
- 关于迭代器中IEnumerable与IEnumerator的区别
首先是IEnumerable与IEnumerator的定义: 1.IEnumerable接口允许使用foreach循环,包含GetEnumerator()方法,可以迭代集合中的项. 2.IEnumer ...
- IEnumerable和IEnumerator 详解
IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象.IEnumerator对象有什么呢?它是一个真正的 ...
- IEnumerable和IEnumerator详解
引言 IEnumerable是可枚举的所有非泛型集合的基接口, IEnumerable包含一个方法GetEnumerator(),该方法返回一个IEnumerator:IEnumerator提供通过C ...
- IList,ICollection,IEnumerable,IEnumerator,IQueryable
IList 是 ICollection 接口的子代,并且是所有非泛型列表的基接口.IList 实现有三种类别:只读.固定大小和可变大小.无法修改只读 IList.固定大小的 IList 不允许添加或移 ...
- C#知识点总结系列:2、C#中IDisposable和IEnumerable、IEnumerator
C#中如何合理的释放非托管内存?在本文中我们将讲解使用IDisposable释放托管内存和非托管内存. A.首先需要让类实现IDisposable接口,然后实现IDispose方法. A.a核心Dis ...
- c#的IList,IEnumerable和IEnumerator
IList 是 ICollection 接口的子代,并且是所有非泛型列表的基接口.IList 实现有三种类别:只读.固定大小和可变大小.无法修改只读 IList.固定大小的 IList 不允许添加或移 ...
最新文章
- ICML 2019接受论文:清华、北大领跑,谷歌强压枝头,BAT略显“低调”
- POJ1696 Space Ant
- 【更新】Essential Studio for ASP.NET MVC更新至2018 v4(四)
- Junit_测试概述
- 2021富途校招后台C++
- 天视通ipc地址修改工具_远程运行小工具PsExec
- 腾讯x5内核使用方法 手动安装 全网最简单
- Jsp和Servlet的关系(通俗易懂)
- 关于计算机ps读后感,ps心得体会4篇
- 英伟达官网怎么找老版本的显卡驱动
- c语言中指数常量注意什么意思,C语言入门知识:常量
- Android开发打开手机自带浏览器
- 理解蓝绿发布、灰度发布和滚动发布
- 《如何有效阅读一本书-超实用笔记读书法》
- 热电阻温度计 电阻温度探测器 直接浸入式清洁传感器 精密RTD 美国Burns 胶囊式铂电阻温度检测器 迷你RTD整体热电偶套管 气温传感器 测温传感器 温度传感器 温度传感器生产厂家 温度变送器
- 杭州的旅游景点有哪些传说的民间故事
- 重装win10之后谷歌chrome浏览器字体模糊的问题
- NTP服务被利用做流量攻击以及检测预防手段
- 【科研分享】Matplotlib 绘制多子图(subplot)进行实验结果分析
- 获取Avrix上Computer Vision and Pattern Recognition的论文,进一步进行统计分析。
热门文章
- CNN网络结构的发展:从LeNet到EfficientNet
- SAP WM中阶下架策略A(Partial Pallet Quantity)
- SAP RETAIL 分配规则里的哪些数据不会被带入分配表?
- 深入了解SAP S4 HANA Business Partner【中英文双语版】
- 深度学习框架大PK:TNN决战MNN,ncnn依旧经典
- 地摊重现江湖,疫情带给我们的意外收获
- Multi-task Learning(Review)多任务学习概述
- 2019年上半年收集到的人工智能AutoML干货文章
- 中国ATM龙头转型 全要素布局人工智能
- 吴军:既能得诺贝尔奖,又能生产高科技产品,美国的科研机制是如何运行的?...