我们在编码中,经常使用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相关推荐

  1. Unity 新手入门 如何理解协程 IEnumerator yield

    Unity 新手入门 如何理解协程 IEnumerator 本文包含两个部分,前半部分是通俗解释一下Unity中的协程,后半部分讲讲C#的IEnumerator迭代器 协程是什么,能干什么? 为了能通 ...

  2. [转]那些年我还不懂:IList,ICollection,IEnumerable,IEnumerator,IQueryable

    1.首先看一个简单的例子 int[] myArray = { 1, 32, 43, 343 };IEnumerator myie = myArray.GetEnumerator();myie.Rese ...

  3. C# IEnumerable和IEnumerator的区别,如何实现

    IEnumerable接口和IEnumerator接口是.NET中非常重要的接口,二者有何区别? 1. 简单来说IEnumerable是一个声明式的接口,声明实现该接口的类就是"可迭代的en ...

  4. 关于迭代器中IEnumerable与IEnumerator的区别

    首先是IEnumerable与IEnumerator的定义: 1.IEnumerable接口允许使用foreach循环,包含GetEnumerator()方法,可以迭代集合中的项. 2.IEnumer ...

  5. IEnumerable和IEnumerator 详解

    IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象.IEnumerator对象有什么呢?它是一个真正的 ...

  6. IEnumerable和IEnumerator详解

    引言 IEnumerable是可枚举的所有非泛型集合的基接口, IEnumerable包含一个方法GetEnumerator(),该方法返回一个IEnumerator:IEnumerator提供通过C ...

  7. IList,ICollection,IEnumerable,IEnumerator,IQueryable

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

  8. C#知识点总结系列:2、C#中IDisposable和IEnumerable、IEnumerator

    C#中如何合理的释放非托管内存?在本文中我们将讲解使用IDisposable释放托管内存和非托管内存. A.首先需要让类实现IDisposable接口,然后实现IDispose方法. A.a核心Dis ...

  9. c#的IList,IEnumerable和IEnumerator

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

最新文章

  1. ICML 2019接受论文:清华、北大领跑,谷歌强压枝头,BAT略显“低调”
  2. POJ1696 Space Ant
  3. 【更新】Essential Studio for ASP.NET MVC更新至2018 v4(四)
  4. Junit_测试概述
  5. 2021富途校招后台C++
  6. 天视通ipc地址修改工具_远程运行小工具PsExec
  7. 腾讯x5内核使用方法 手动安装 全网最简单
  8. Jsp和Servlet的关系(通俗易懂)
  9. 关于计算机ps读后感,ps心得体会4篇
  10. 英伟达官网怎么找老版本的显卡驱动
  11. c语言中指数常量注意什么意思,C语言入门知识:常量
  12. Android开发打开手机自带浏览器
  13. 理解蓝绿发布、灰度发布和滚动发布
  14. 《如何有效阅读一本书-超实用笔记读书法》
  15. 热电阻温度计 电阻温度探测器 直接浸入式清洁传感器 精密RTD 美国Burns 胶囊式铂电阻温度检测器 迷你RTD整体热电偶套管 气温传感器 测温传感器 温度传感器 温度传感器生产厂家 温度变送器
  16. 杭州的旅游景点有哪些传说的民间故事
  17. 重装win10之后谷歌chrome浏览器字体模糊的问题
  18. NTP服务被利用做流量攻击以及检测预防手段
  19. 【科研分享】Matplotlib 绘制多子图(subplot)进行实验结果分析
  20. 获取Avrix上Computer Vision and Pattern Recognition的论文,进一步进行统计分析。

热门文章

  1. CNN网络结构的发展:从LeNet到EfficientNet
  2. SAP WM中阶下架策略A(Partial Pallet Quantity)
  3. SAP RETAIL 分配规则里的哪些数据不会被带入分配表?
  4. 深入了解SAP S4 HANA Business Partner【中英文双语版】
  5. 深度学习框架大PK:TNN决战MNN,ncnn依旧经典
  6. 地摊重现江湖,疫情带给我们的意外收获
  7. Multi-task Learning(Review)多任务学习概述
  8. 2019年上半年收集到的人工智能AutoML干货文章
  9. 中国ATM龙头转型 全要素布局人工智能
  10. 吴军:既能得诺贝尔奖,又能生产高科技产品,美国的科研机制是如何运行的?...