C# IEnumerable、IEnumerator和yield关键字详解

可枚举类型就是可以通过foreach循环进行运算的,支持GetEnumerator方法的(可以有参数)的类,那么这个类可以称为可枚举类型一、IEnumerable和IEnumerator 1.IEnumerable 该枚举数支持在非泛型集合上进行简单迭代。 1.1IEnumerator GetEnumerator() 返回一个循
摘要由CSDN通过智能技术生成

本文章仅为个人学习总结,如有错误请指正。

可枚举类型就是可以通过foreach循环进行运算的,支持GetEnumerator方法的(可以有参数)的类,那么这个类可以称为可枚举类型

本文章具有以下知识点
1.实现IEnumerator和IEnumerable接口。
2.yield关键字
3.foreach步骤。

会由一篇文章讲解List是如何实现foreach循环的和简单的List内部实现代码。

一、IEnumerable和IEnumerator
1.IEnumerable
该枚举数支持在非泛型集合上进行简单迭
1.1IEnumerator GetEnumerator()
返回一个循环访问集合的枚举数,可用于循环访问集合的 System.Collections.IEnumerator 对象,这个对象具体实现如何进行迭代(遍历)。
2.IEnumerator:
支持对非泛型集合的简单迭代。
2.1object Current { get; }
获取集合中的当前元素。
2.2 bool MoveNext();
将枚举数推进到集合的下一个元素。
如果枚举数成功地推进到下一个元素,则为 true;如果枚举数越过集合的结尾,则为 false。
2.3void Reset();
将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。

以上是微软给出的解释,我的理解
    IEnumerable
        实现这个接口的类型支持某个类型的集合或数组的迭代。具体如何迭代由实现IEnumerator接口的类来确定
    IEnumerator
        确定指定的类(该类保证了某个类的集合具有迭代功能)如何进行迭代。
    简单的说:B类型保证A类型的集合具有迭代功能,C类型去确定B类型如何进行简单的迭代(迭代返回的对象实际为A类型)

微软给出的Demo:
Person是A类型。
People是B类型,实现接口IEnumerable,支持对Person集合上进行简单迭代.
PeopleEnum是C类型,实现接口IEnumerator,实现Person集合的类型People是如何进行迭代的。

        public class Person
        {
            public Person(string fName, string lName)
            {
                this.firstName = fName;
                this.lastName = lName;
            }

            public string first
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值