yield流式处理
yield流式处理
1、每到一次return都会出来打印一次,源代码也是根据return个数分成若干状态机,适用于把大数据切割成小数据依次返回
static async Task Main(string[] args)
{
foreach (var item in YYY())
{
Console.WriteLine(item);
}
}
static IEnumerable<int> YYY()
{
yield return 1;
yield return 2;
yield return 3;
}
//控制台输出1、2、3,就不展示了
2、但是异步方法也是分成状态机,所以这两个魔法碰到魔法了,自然就不行报错了
微软也是没办法,所以搞了一个新的语法:返回值声明为IAsyncEnumerable,不带Task,遍历的时候加上await
static async Task Main(string[] args)
{
//遍历加上await
await foreach (var item in YYY())
{
Console.WriteLine(item);
}
}
//返回值声明为IAsyncEnumerable,不带Task
static async IAsyncEnumerable<int> YYY()
{
yield return 1;
yield return 2;
yield return 3;
}
//如何控制台又可以输出1、2、3了