using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSGDemo.CSG018
{
//https://docs.microsoft.com/zh-cn/dotnet/csharp/iterators
//#csg018-01 迭代器的含义
//Iterator(迭代器),在C#定义迭代功能的接口为 IEnumerable<T>,含义是“可枚举对象”,在这里它和“可迭代”含义相同。
//可枚举接口的类型需要返回一个 IEnumerator<T> 对象,含义是枚举器,也就是迭代器。
//#csg018-02 迭代器作用
//可枚举对象支持使用 foreach 关键字进行遍历。
//另外 几乎所有的.NET集合类型都实现了 IEnumerable 或 IEnumerable<T> 接口。
//#csg018-03,遍历 IEnumerable<T> 对象
class DemoClass1
{
public void DemoMethod1()
{
var list = new int[] { 1, 2, 3, 4, 5, 6, 7 };
//#csg018-03
foreach (var value in list)
{
Console.WriteLine(value);
}
}
//#csg018-04,迭代器方法
//迭代器方法用于创建可用于枚举的数据源,当数据被请求时以顺序的方式创建数据对象。
public IEnumerable<int> GetSingleDigitNumbers()
{
yield return 0;
yield return 1;
yield return 2;
yield return 3;
yield return 4;
yield return 5;
yield return 6;
yield return 7;
yield return 8;
yield return 9;
}
}
}