C#中有关yield实践

35 阅读1分钟

实践代码 定义方法

      public static IEnumerable<int> TestFor()
        {
            List<int> numbers=new List<int>();
            for (int i=0;i<10;i++)
            {
                numbers.Add(i);
                Thread.Sleep(1000);
            }
            return numbers;
        }
        private static IEnumerable<int> IteratorMethod()
        {
            int index = 0;
            while (index < 10)
            {
               // if (index % 2 == 1)
                yield return index;
                index++;
                Thread.Sleep(1000);
            }
        }

测试代码

 foreach (var item in IteratorMethod())
            {
                //一条一条显示
                Console.WriteLine(item.ToString());
            }
            Console.WriteLine("=================foreche===============");
            foreach (var item in TestFor())
            {
                //一下子全部显示出来
                Console.WriteLine(item.ToString());
            }

结果图

image.png

结论: 使用yield的是一次出来一个,而不使用yield的是必需等所有加到数组,然后一下子全部出来。

延伸学习:www.cnblogs.com/blueberryzz… www.cnblogs.com/blueberryzz…