认识yield

原创 2015年11月19日 14:58:37

yieldC#参考)

在迭代器块中用于向枚举数对象提供值或发出迭代结束信号。它的形式为下列之一:

yield return <expression>;

yield break;

备注 :

计算表达式并以枚举数对象值的形式返回;expression必须可以隐式转换为迭代器的 yield类型。

yield 语句只能出现在iterator块中,该块可用作方法、运算符或访问器的体。这类方法、运算符或访问器的体受以下约束的控制:

不允许不安全块。

方法、运算符或访问器的参数不能是 ref out

yield 语句不能出现在匿名方法中。

当和 expression一起使用时,yield return语句不能出现在 catch块中或含有一个或多个 catch子句的 try块中。

yield return 提供了迭代器一个比较重要的功能,即取到一个数据后马上返回该数据,不需要全部数据装入数列完毕,这样有效提高了遍历效率。

也就是说,yield到一个值后程序就中断了,等到下一次取值的时候又继续从这个yield开始运行到下个yield

public System.Collections.IEnumerator GetEnumerator()
{
    //第一次调用这个方法直接返回1
    yield return "1";
    //第二次调用这个方法则从这里继续运行
    Thread.Sleep(5000);
    //直接返回2
    yield return "2";
    Thread.Sleep(5000);
    yield return "3";
    Thread.Sleep(5000);
    yield return "4";
    Thread.Sleep(5000);
    yield return "5";
    Thread.Sleep(5000);
    yield return "6";
}



class program
{
    static void Main()
    {
        Persons arrPersons = new Persons();
        foreach (string s in arrPersons)
        {
        System.Console.WriteLine(s);
        }
    }
}




java线程中yield()和join()的区别

多线程在面试中是非常受欢饮的题目,我个人认为我们很少有机会能够真正的用到复杂的多线程(我在7年前使用过一次),熟悉这些概念能够增加你的信心,先前,我已经讨论了一个相似的问题,wait()和sleep(...
  • maoyeqiu
  • maoyeqiu
  • 2015年12月08日 11:26
  • 1339

浅谈Python中的yield表达式

浅谈Python协程中的yield表达式python生成器python中生成器是迭代器的一种,使用yield返回函数值。每次调用yield会暂停,而可以使用next()函数和send()函数可以恢复生...
  • u014683535
  • u014683535
  • 2016年06月25日 11:26
  • 2416

C#中yield return用法分析

本文实例讲述了C#中yield return用法,并且对比了使用yield return与不使用yield return的情况,以便读者更好的进行理解。具体如下: yield关键字用于遍历循环中,y...
  • cbbbc
  • cbbbc
  • 2015年12月09日 10:36
  • 2057

java多线程学习——(3)认识yield,join,sleep方法

sleep: sleep()方法是Thread类的一个静态方法,其作用是使当前线程暂停执行一段时间(可自定义暂停时长),让其他线程有机会执行,当调用Thread.sleep()方法后,若有同步代码块...
  • qq_27770257
  • qq_27770257
  • 2017年10月25日 17:37
  • 102

简单理解认识yield表达式

yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: ...
  • u010159842
  • u010159842
  • 2016年12月27日 16:28
  • 436

RTL Coding Styles That Yield Simulation and Synthesis Mismatches

  • 2012年02月09日 17:47
  • 61KB
  • 下载

yield curve

  • 2008年10月24日 12:17
  • 10KB
  • 下载

PHP 5.5 yield and promises

  • 2014年05月29日 14:06
  • 96KB
  • 下载

yield总结与实例

  • 2016年09月08日 14:32
  • 40KB
  • 下载

java 线程让步(Yield)

  • 2010年06月21日 15:47
  • 59KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:认识yield
举报原因:
原因补充:

(最多只允许输入30个字)