using System;
using System.Collections; namespace YieldDemo
{ class Program
{
public static IEnumerable Power(int num, int exponent)
{
int counter = 0;
int result = 1;
while (counter++ < exponent)
{
//if (counter == 4) yield break;
if (counter == 4) yield return null;
result = result * num;
yield return result;
}
}
public static IEnumerator Power2(int num, int exponent)
{
int counter = 0;
int result = 1;
while (counter++ < exponent)
{
//if (counter == 4) yield break;
if (counter == 4) yield return null;
result = result * num;
yield return result;
}
}
static void Main(string[] args)
{
foreach (var item in Power(2,8))
{
Console.WriteLine(item);
} Console.WriteLine("---");
var e = Power2(2, 8);
while (e.MoveNext())
{
var i = e.Current;
Console.WriteLine(i);
} Console.WriteLine("main done");
Console.ReadKey();
}
}
}

  

C# yield return; yield break;的更多相关文章

  1. yield return,yield break

    转自, http://www.cnblogs.com/kingcat/archive/2012/07/11/2585943.html yield return 表示在迭代中下一个迭代时返回的数据,除此 ...

  2. 12.C#yield return和yield break及实际应用小例(六章6.2-6.4)

    晚上好,各位.今天结合书中所讲和MSDN所查,聊下yield关键字,它是我们简化迭代器的关键. 如果你在语句中使用了yield关键字,则意味着它在其中出现的方法.运算符或get访问器是迭代器,通过使用 ...

  3. 可惜Java中没有yield return

    项目中一个消息推送需求,推送的用户数几百万,用户清单很简单就是一个txt文件,是由hadoop计算出来的.格式大概如下: uid caller 123456 12345678901 789101 12 ...

  4. C#中的yield return与Unity中的Coroutine(协程)(上)

    C#中的yield return C#语法中有个特别的关键字yield, 它是干什么用的呢? 来看看专业的解释: yield 是在迭代器块中用于向枚举数对象提供值或发出迭代结束信号.它的形式为下列之一 ...

  5. yield return 和 yield break

    //yield return 返回类型必须为 IEnumerable.IEnumerable<T>.IEnumerator 或 IEnumerator<T>. static I ...

  6. C#yield return和yield break

    C#yield return和yield break 晚上好,各位.今天结合书中所讲和MSDN所查,聊下yield关键字,它是我们简化迭代器的关键. 如果你在语句中使用了yield关键字,则意味着它在 ...

  7. yield return 和yield break

    这个还是有点意思,两个都是有返回的意思,但是区别在哪里呢? 1.return 会销毁函数的局部变量,下次调用的时候又会产生新的值 2.yield 当退出函数的时候,变量人然存在,函数下次调用的时候变量 ...

  8. C# yield return 和 yield break

    yield关键字用于遍历循环中,yield return用于返回IEnumerable<T>,yield break用于终止循环遍历. 以下对比了使用yield return与不使用yie ...

  9. 读书笔记 C# yield return与yield break执行顺序的浅析

    yield return可一次返回一个元素,并保留当前在代码中的位置,下次调用当前迭代器函数时,将从该位置从新执行.也就是说执行了yield return的时候,迭代器函数就返回了一个元素给forea ...

随机推荐

  1. Android-自定义View前传-View的三大流程-Layout

    Android-自定义View前传-View的三大流程-Layout 参考 <Android开发艺术探索> https://github.com/hongyangAndroid/FlowL ...

  2. POJ1700----Crossing River

    #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> us ...

  3. Python virtualenvwrapper在Win下的安装和管理

    安装: 在Win下安装wrapper的时候,需要安装一个特殊的版本,即virtualenvwrapper-win.如果安装的只是virtualenvwrapper,则会出现mkvirtualenv,l ...

  4. for each ...in / for ...in / for...of

    参考博客: https://www.cnblogs.com/ruoqiang/p/6217929.html https://www.cnblogs.com/dupd/p/5895474.html 1 ...

  5. Django项目——CRM

    一.开发背景 由于公司人员的增多,原来通过excel表格存取方式过于繁琐,而且对于公司人员的调配和绩效考核等不能做到精确处理,所以开发crm系统,开始开发只是针对销售人员和客户,后面陆续加上一些操作, ...

  6. Git——常用场景解析

    总结:本篇文章从初识GitHub.Git,实践GitHub的五种常用场景,分别是:git for windows安装,git配置,克隆远程代码到本地,上传本地代码到远程以及Git的常用指令.相信Jam ...

  7. mongoDB,mongoose,没有数组就添加,如果有了数组,就向数组中添加新元素

    db.getCollection('photos').findOneAndUpdate("5b028e71f32bd5004f905879",   //findByIdAndUpd ...

  8. js数组根据指定字段(true or false)排序

    const obj = [ {name:'1',bind:true}, {name:'2',bind:false}, {name:'3',bind:true}, {name:'4',bind:fals ...

  9. [HNOI2017]礼物

    Description: 给定两个有n个数的序列,你可以将其中一个进行旋转(想象是在一个环上),或者对序列的每个数加上一个非负整数C 求操作后 \(\sum{(a_i-b_i)^2}\)的最小值 De ...

  10. assets 与 res 目录的区别

    res 目录存放的资源在编译时,会自动生成 R.java,该文件为 res 目录下的资源创建索引,程序可以直接通过 R 资源清单类进行访问,文件assets 目录存放的资源一般是通过 AssetMan ...