C# yeild使用

  C# yeild的两种形式的yield语句:


yield return <expression>;
yield break;

  使用 yield return 语句每一次返回每个元素。
  将使用 foreach 语句从客户端代码中调用迭代器。 foreach
循环的每次迭代都会调用迭代器方法。 迭代器方法运行到 yield return 语句时,会返回一个expression表达式并保留当前在代码中的位置。
当下次调用迭代器函数时执行从该位置重新启动。
  可以用 yield break语句来终止迭代。

  示例:


using System;
using System.Collections.Generic;
using System.Text;

class Program
{
static void Main(string[] args)
{
foreach (int i in Power(2, 8))
{
Console.WriteLine(i);
}
}

public static IEnumerable<int> Power(int number, int exponent)
{
int result = 1;
for (int i = 0; i < exponent; i++)
{
result *= number;
yield return result;
}
}
}

  运行输出:


2
4
8
16
32
64
128
256
请按任意键继续. . .

C# yeild使用,布布扣,bubuko.com

时间: 2024-10-13 09:42:43

C# yeild使用的相关文章

python yeild使用

闲的蛋疼又想起之前看到的文章,想想还是拿来复习一遍写进博客里. 原文链接:https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ yeild可以把普通的function函数,变成 generator生成器. 由原来的return,变为yeild.没调用一次generator.next()就返回一个值,然后停住,等待下次的next(),直到再没有值,raise一个StopIteration. python yeild

python yeild 生成器

python yeild  生成器 生成器函数在生成值后自动挂起并且暂停它的执行和状态(常常在从头计算整个系列的值或者手动保存和恢复类中的状态时,作为一种解决方案) 生成器在被挂起时自动保存状态,yield将函数挂起后将向调用者返回一个值 ////////////////经过单步执行 可以看到(1)和(2)是交替执行的 >>> def  gensqures(N):       ////(1) """""" for i in ra

with as ,raise,yeild 的简单使用。

1,with as,帮助处理异常以及该完成的事情,具体原理是with 会进入一个__enter__, 在__exit__: ex: with open(path) as file: print file.read() 很方便. 2,raise 显示抛出异常,抛出后不再往下运行. if data is None: print "data is None" raise "data empty" 3,yeild 生成器,可以yeild语句时候返回,直到下次迭代继续执行.如

JVM线程状态,park, wait, sleep, interrupt, yeild 对比

---恢复内容开始--- JVM线程状态 NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED BLOCKED是等待获得对象锁 WAITING是调用了wait, sleep, park 操作系统线程状态 sleep, 进入TIMED_WAITING状态,不出让锁 wait, 进入TIMED_WAITING状态,出让锁,并进入对象的等待队列 park, 进入WAITING状态,对比wait不需要获得锁就可以让线程WAITING,通过u

Thread.Sleep(0) vs Sleep(1) vs Yeild

本文将要提到的线程及其相关内容,均是指 Windows 操作系统中的线程,不涉及其它操作系统. 文章索引 核心概念 Thread.Yeild       Thread.Sleep(0) Thread.Sleep(1) 实验告诉你:单一线程 实验告诉你:多线程(同优先级) 实验告诉你:多线程(不同优先级) 本人观点 参考资源 在进入正文前,有几个知识点需要大家在阅读前有所了解. 核心概念 优先级调度算法 处理器是一个操作系统执行任务的工具,线程是一个操作系统执行任务的基本单位,处理器的数量决定了不

并发基础(七) Thread 类的sleep()、yeild()、join()

1.Thread.sleep(long millis ) sleep( )是一个静态方法,让当前正在执行的线程休眠(暂停执行),而且在睡眠的过程是不释放资源的,保持着锁. 在睡眠的过程,可以被中断,注意抛出InterruptedException异常: 作用: 1.暂停当前线程一段时间: 2.让出CPU,特别是不想让高优先级的线程让出CPU给低优先级的线程 try { //单位是毫秒,睡眠1秒 Thread.sleep(1000); } catch (InterruptedException e

【C#复习总结】探究各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字

前言 先普及一下线程安全和类型安全 线程安全: 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题. 线程安全问题都是由全局变量及静态标量引起的. 若每个线程中对全局变量.静态变量只有读操作,而无写操作,一般来说,这个全局变量

python yeild and generator

https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do?page=1&tab=votes#tab-top 原文地址:https://www.cnblogs.com/lion-zheng/p/9784681.html

python yeild: send, close, throw

send 1. yield可以产出值,可以接收值 2. 在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种 a. gen.send(None) b. next(gen) def gen_func(): #1. 可以产出值, 2. 可以接收值(调用方传递进来的值) html = yield 1 print(html) yield 2 yield 3 return "bobby" #1. 生成器不只可以产出值,还可以接收值 if __name__ == "_