C#如何实现迭代器方法
这篇文章主要介绍C#如何实现迭代器方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1.迭代器方法
可以使用foreach
循环语句进行的迭代的方法,称为可迭代方法,或者迭代器方法。
迭代器用法法介绍。
迭代器用于依次返回每个元素,一般用于foreach循环语句。迭代器方法需要使用yield return语句。
yield return 语句介绍:
保持代码的当前位置,在下一次调用迭代器方法时执行。
迭代方法在使用过程中左右步骤对应。yield return语句主要是返回一个结果作为函数调用的结果。并记录当前运行位置,当下次函数被调用时,在当前位置执行这个函数。在迭代块中除了yield return
外,不允许出现普通的return语句。
迭代方法使用的命名空间为using System.Collections.Generic
;
下面代码为迭代器使用的具体代码:
class Program{ public static IEnumerable<int> 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>那么你返回的值是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#如何实现迭代器方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341