yield return:使用.NET的状态机生成器

时间:2023-03-09 21:33:13
yield return:使用.NET的状态机生成器

通过关键字词组yield return,.Net Framework(从2.0开始)会为我们生成一个状态机.状态机实际上就是一个可枚举的类型化集合

理解yield return的工作方式

  关键字词组yield return是迭代器模式(Iterator Pattern)的一种实现,能够将本身不是可迭代集合的对象做成可迭代集合

 using System;
using System.Collections.Generic;
using System.Text; namespace SimpleYieldReturn {
class Program {
static void Main(string[] args) { foreach(int i in GetEvents()) {
Console.WriteLine(i);
}
Console.Read();
} public static IEnumerable<int> GetEvents() {
var integers = new[] { ,,,,,,, };
foreach(int i in integers) {
if(i % == ) {
yield return i;
}
}
}
} }

SimpleYieldReturn

GetEvents被当作集合来用,yield return导致编译器自动生成了可枚举类

yield return:使用.NET的状态机生成器

yield return:使用.NET的状态机生成器