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了
posted @ 2023-01-31 23:58  long-livece  阅读(119)  评论(0编辑  收藏  举报