C#迭代器方法介绍
目录
- 1.迭代器方法
- 2.手动实现迭代器方法
1.迭代器方法 可以使用
foreach
循环语句进行的迭代的方法,称为可迭代方法,或者迭代器方法。迭代器用法法介绍。
迭代器用于依次返回每个元素,一般用于foreach循环语句。迭代器方法需要使用yield return语句。
yield return 语句介绍:
保持代码的当前位置,在下一次调用迭代器方法时执行。
文章图片
迭代方法在使用过程中左右步骤对应。yield return语句主要是返回一个结果作为函数调用的结果。并记录当前运行位置,当下次函数被调用时,在当前位置执行这个函数。在迭代块中除了
yield return
外,不允许出现普通的return语句。迭代方法使用的命名空间为
using System.Collections.Generic
;
下面代码为迭代器使用的具体代码:
class Program{public static IEnumerableFibs(){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); elsebreak; Console.ReadKey(); } }
IEnumerable
是泛型定义的里面的int关系到你迭代对象yield return返回值的类型。如果你定义IEnumerableIEnumerable
那么你的返回值是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#迭代器方法介绍的文章就介绍到这了,更多相关C#迭代器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- C#调用Oracle存储过程方法介绍(附源码)
- 浏览器的进程和线程
- Java Iterator(迭代器)
- Javascript|Javascript 动态样式控制方法
- electron打包vue项目的方法|electron打包vue项目的方法 步骤
- 一文搞懂python|一文搞懂python 中的迭代器和生成器
- Nacos源码阅读方法
- python|python 中的迭代器和生成器简单介绍
- 五、ES6之对象
- Spring事件监听器之@EventListener原理分析