当前位置: 首页 > article >正文

C# 迭代器

 yield return 的核心逻辑和继承两个接口实现其中的方法是一样的

迭代器是一种设计模式

yield return 只需要继承一个IEnumerable接口

1.先获取in后面这个对象的 IEnumerator,会调用对象其中的GetEnumerator方法 来获取
2.执行得到这个IEnumerator对象中的 MoveNext方法
3.只要MoveNext方法的返回值时true 就会去得到Current,然后复制给 item

using System.Collections;
using System.Reflection;

class Program
{
    public static void Main()
    {
        Mylist alist = new Mylist();
        foreach (var item in alist)
        {
            Console.WriteLine(item);
        }
    }
}
class Mylist:IEnumerable,IEnumerator
{
    char[] charArray;
   int Cursor = -1;
    
    public Mylist() 
    {
        charArray = new char[] {'a','b','c','d','e'};
       
    }

    //public IEnumerator GetEnumerator()
    //{
    //    for (int i = 0; i < charArray.Length; i++)
    //    {
    //        yield return charArray[i];
    //    }
    //}


    public object Current 
    {
        get
        {
            return charArray[Cursor];
        }
    }
    public IEnumerator GetEnumerator()
    {
        Reset();
       return this;
    }

    public bool MoveNext()
    {
        Cursor++;
        return (Cursor < charArray.Length);
    }

    public void Reset()
    {
        Cursor = -1;
    }
}


http://www.kler.cn/news/292904.html

相关文章:

  • 可解释人工智能(XAI)领域的全面概述
  • 【Spring Boot 3】【Web】配置HTTPS
  • Aloudata CAN 发布:真正实现企业指标的管理、研发与消费一体化
  • Java 基础八股文
  • EmguCV学习笔记 VB.Net 9.3 移动检测类
  • 【补-网络安全】日常运维(二)终端端口占用排查
  • 10--基于kubernetes的redis-cluster部署
  • nvm详细安装使用教程和详细命令,以及提示” ‘nvm‘ 不是内部或外部命令,也不是可运行的程序或批处理文件“处理办法
  • 4、Django Admin对自定义的计算字段进行排序
  • Verilog和Matlab实现RGB888互转YUV444
  • go--闭包
  • 阿里“整改摘帽”,马云的“百年企业”愿景再出发
  • 什么是URL Slug及其如何影响SEO?
  • 中国科学院近代物理研究所博士招生目录
  • python进阶篇-day07-进程与线程
  • [米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-24 TPG图像测试数据发生器设计
  • SD-WAN,是干嘛的?
  • PS插件DR5至臻高级版下载安装教程Photoshop美颜美白牙齿磨皮使用插件百度网盘分享
  • 【 OpenHarmony 4.1 Launcher 源码解析 】-- 初体验
  • 推荐字体网站
  • Openwrt 安装 AX210 无线网卡
  • 22. c语言怎么打印2进制、8进制、10进制、16进制数?
  • 【SQL】Delete使用
  • ConfigBus
  • 基于Python的电商导购APP设计与实现
  • Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用
  • 【openwrt-21.02】T750 openwrt MT7916 使用Intel AX200的网卡WPS PBC连接失败问题分析及解决方案
  • C++学习笔记——day 1
  • 后缀表达式转中缀表达式
  • 攻防世界 unseping