千家信息网

C#如何实现迭代器方法

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章主要介绍C#如何实现迭代器方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.迭代器方法可以使用foreach循环语句进行的迭代的方法,称为可迭代方法,或者迭代器方法
千家信息网最后更新 2024年11月19日C#如何实现迭代器方法

这篇文章主要介绍C#如何实现迭代器方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1.迭代器方法

可以使用foreach循环语句进行的迭代的方法,称为可迭代方法,或者迭代器方法。

迭代器用法法介绍。

  迭代器用于依次返回每个元素,一般用于foreach循环语句。迭代器方法需要使用yield return语句。

yield return 语句介绍:

  保持代码的当前位置,在下一次调用迭代器方法时执行。

迭代方法在使用过程中左右步骤对应。yield return语句主要是返回一个结果作为函数调用的结果。并记录当前运行位置,当下次函数被调用时,在当前位置执行这个函数。在迭代块中除了yield return外,不允许出现普通的return语句。

迭代方法使用的命名空间为using System.Collections.Generic;

下面代码为迭代器使用的具体代码:

class Program{    public static IEnumerable Fibs()    {        int f1 = 1, f2 = 2;        while (true)        {            yield return f1;            yield return f2;            f1 += f2;            f2 += f1;        }    }    static void Main(string[] args)    {        foreach (int i in Fibs())            if (i < 20)                Console.WriteLine("{0}", i);             else                break;        Console.ReadKey();    } }

 IEnumerable是泛型定义的里面的int关系到你迭代对象yield return返回值的类型。如果你定义IEnumerable那么你返回的值是int类型,如果你定义IEnumerable那么你的返回值是string类型以此类推。如果你想以某个条件结束方法。可以使用外面的条件如上图所示。也可以使用yield break。

class Program{    public static IEnumerable Fibs()    {        string f1 = "1", f2 = "2";        while (true)        {            yield return f1;            yield return f2;            f1 += f2;            f2 += f1;            if (f1.Length > 8)                yield break;        }    }     static void Main(string[] args)    {        foreach (string i in Fibs())                             Console.WriteLine("{0}", i);        Console.ReadKey();    } }

2.手动实现迭代器方法

首先是通过使用接口IEnumerable的方式,然后编写IEnumerator GetEnumerator()的方式。在代码中控制索引位置,和循环次数。如果索引位置出错则使用代码throw new NotImplementedException()报错。

using System;using System.Collections;using System.Collections.Generic;  namespace test02{    class Program    {        static void Main(string[] args)        {            object [] e = new object[5] { 1, 2, 3, 4, 5 };            Itear01 s = new Itear01(e,2);            foreach (object i in s)                    Console.WriteLine("{0}", i);            Console.ReadKey();        }     }     public class Itear01 : IEnumerable    {        object[] values;        int StartPoint=-1;        int current=0;        public Itear01(object[] values,int StartPoint)        {            this.values = values;            this.StartPoint = StartPoint;        }        public IEnumerator GetEnumerator()        {            if(this.StartPoint==-1)                throw new NotImplementedException();            while(true)            {                yield return this.values[StartPoint];                StartPoint = (StartPoint + 1) % values.Length;                current++;                if (current == values.Length)                {                    break;                }            }                     }    }}

以上是"C#如何实现迭代器方法"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

迭代 方法 语句 代码 位置 函数 类型 循环 C# 内容 方式 条件 篇文章 索引 结果 普通 以此类推 上图 中左 价值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 自己做的记账app用什么数据库 sql数据库分库 江阴一站式软件开发销售电话 清除代码软件开发 疫情防控期间收集到的数据库 云南医院时间频率同步服务器 招生的普通高校及招生专业数据库 数据库技术随堂论文 网络安全法内容图片 miui隐私保护华为服务器 临江服务器维修 shell服务器怎么搭建 eudamed数据库 常用服务器的地址和端口是什么 惠尔顿网络安全审计系统v9 toad怎么连接数据库服务器 东丽区企业网络技术诚信合作 java 把对象存到数据库 qq飞车怎样删除另一个服务器 怎么查论文上了万方数据库 vscode 数据库 金豆粒网络技术 浪潮服务器声音怎么调小 数据库创建完视图为什么不显示 证券金融软件开发招聘信息 江西网络时钟服务器虚拟主机 动态数据库读取表格怎么分页 哔哩哔哩服务器什么时候恢复 常州国企招聘软件开发编程 网络安全领域肉鸡
0