美文网首页
对“yield”关键字的个人理解

对“yield”关键字的个人理解

作者: 夜藍 | 来源:发表于2021-03-31 17:29 被阅读0次

上代码:

class Program

    {

        static void Main(string[] args)

        {

            //var list = Power(2, 8).ToList();

            var list = Power(2, 8);

            foreach (int i in list)

            {

                Console.Write("{0} \r\n", i);

            }

            Console.ReadKey();

        }

        public static IEnumerable<int> Power(int number, int exponent)

        {

            int result = 1;

            for (int i = 0; i < exponent; i++)

            {

                result = result * number;

                yield return result;

            }

            //Thread.Sleep(1000);

            yield return 3;

            //Thread.Sleep(1000);

            yield return 4;

            //Thread.Sleep(1000);

            yield return 5;

        }

    }

执行结果:

如图:当取消睡眠代码注释时,前面2到256瞬间输出,而输出3、4、5都等待了1秒。若同时在list后面加ToList()方法后,会立即执行所有返回值,耗时3秒多,反之瞬间执行完成。

结论:每个yield return可以理解为一个待执行方法,当调用到这个对象时才执行,而且这个“执行方法”作用域是上一个yield到当前yield之间。

相关文章

  • 对“yield”关键字的个人理解

    上代码: class Program { static void Main(string[] args...

  • 重点汇总-python-gitbook-重要点学习-1

    Python中关键字yield有什么作用? 为了理解yield有什么用,首先得理解generators,而理解ge...

  • Python中的yield关键字

    Yield? 总的来说,yield关键字和return关键字有相似之处,但其工作机制却大相径庭。想要完整地理解yi...

  • yield

    摘自MDN,已理解,加深印象。 yield关键字使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器...

  • 简单面试题整理

    概念题: 描述对super,pass,yield,lambda关键字的理解 pass是空语句,是为了保持程序结构的...

  • Python yield关键字

    Python中yield关键字解释 这篇文章关于python的yield关键字。并且文章中会解释什么是yield,...

  • 关键字yield的理解

    在学习python中遇到一个关键字--yield 我记录一下我大概对它的理解 在了解关键字之前我们先了解一下 1....

  • js笔记06-generator 生成器

    一个带状态的函数?可以这么理解 注意*和里面的yield如果是python,那就不需要*,只要有yield关键字的...

  • python中的迭代器

    yield关键字 用法 普通函数: 带有yield关键字的函数: yield将函数的返回值变成了迭代器,其相当于获...

  • python——yield

    使用了yield关键字的函数不再是函数,而是生成器。(使用了yield的函数就是生成器) yield关键字有两点作...

网友评论

      本文标题:对“yield”关键字的个人理解

      本文链接:https://www.haomeiwen.com/subject/ymkahltx.html