yield用法的一点理解
yield 关键字与 return 关键字结合使用,向枚举器对象提供值。这是一个返回值,例如,在 foreach 语句的每一次循环中返回的值。yield 关键字也可与 break 结合使用,表示迭代结束。
yield 语句只能出现在 iterator 块中,这种块可作为方法、运算符或访问器的主体实现。这类方法、运算符或访问器的体受以下约束的控制:
不允许不安全块。
yield return 语句不能放在 try-catch 块中的任何位置。
该语句可放在后跟 finally 块的 try 块中。
yield break 语句可放在 try 块或 catch 块中,但不能放在 finally 块中。
yield 语句不能出现在匿名方法中。
internal class Program
{
private static void Main()
{
ShowGalaxies();
foreach (int i in Power(, ))
{
Console.Write("{0} ", i);
}
List<string> names = new List<string>();
names.Add("fy");
names.Add("sky");
names.Add("sky");
IEnumerable aa = FindBobs(names);
foreach (var i in aa)
{
Console.WriteLine(i.ToString());
}
} private static IEnumerable<string> FindBobs(IEnumerable<string> names)
{
foreach (var currName in names)
{
if (currName == "sky")
{
yield return currName;
}
}
} private static IEnumerable Power(int number, int exponent)
{
int counter = ;
int result = ;
while (counter++ < exponent)
{
result = result * number;
yield return result;
}
} public static void ShowGalaxies()
{
var theGalaxies = new Galaxies();
foreach (Galaxy theGalaxy in theGalaxies.NextGalaxy)
{
Debug.WriteLine(theGalaxy.Name + " " + theGalaxy.MegaLightYears.ToString());
}
} public class Galaxies
{ public System.Collections.Generic.IEnumerable<Galaxy> NextGalaxy
{
get
{
yield return new Galaxy { Name = "Tadpole", MegaLightYears = };
yield return new Galaxy { Name = "Pinwheel", MegaLightYears = };
yield return new Galaxy { Name = "Milky Way", MegaLightYears = };
yield return new Galaxy { Name = "Andromeda", MegaLightYears = };
}
} } public class Galaxy
{
public String Name { get; set; }
public int MegaLightYears { get; set; }
}
}
参考:http://msdn.microsoft.com/zh-cn/library/9k7k7cf0.aspx
yield用法的一点理解的更多相关文章
- unity 3d yield 用法总结
最近,需要需要用unity 3d做点东西,但是了碰到了延迟加载问题,我总结余下: Coroutines & Yield是unity3d编程中重要的概念,它可以实现将一段程序延迟执行或者将其各个 ...
- Python yield用法浅析(stackoverflow)
这是stackoverflow上一个关于python中yield用法的帖子,这里翻译自投票最高的一个回答,原文链接 here 问题 Python中yield关键字的用途是什么?它有什么作用?例如,我试 ...
- opencv笔记5:频域和空域的一点理解
time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...
- 对socket的一点理解笔记
需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...
- iOS 的一点理解(一) 代理delegate
做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...
- 关于web开发的一点理解
对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端 服务端通过解析报文并处理报文最后把处理的结果 ...
- angular.js的一点理解
对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...
- RxSwift 入坑好多天 - 终于有了一点理解
一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...
- rt-thread中动态内存分配之小内存管理模块方法的一点理解
@2019-01-18 [小记] rt-thread中动态内存分配之小内存管理模块方法的一点理解 > 内存初始化后的布局示意 lfree指向内存空闲区首地址 /** * @ingroup Sys ...
随机推荐
- rspec学习02
元数据 RSpec-core存储元数据哈希每实例和组,其中包含他们的描述,声明的位置等等,这个hash控制很多RSpec核心的功能,包括输出格式化程序(访问描述和位置),和before,after钩子 ...
- Selenium如何实现dropbar移动
遇到这个拖拽的dropbar,如何实现呢,, 经过网上查找,可以用Action的方式实现或者js来控制 原理:移动按钮的同时,数字也随着变化 解决方法:1.最简单的就是直接在文本框输入相应的数字 2. ...
- TSSAO Temporal Screen-Space Ambient Occlusion (Unity3d 5 示例实现)
前提 环境光(ambient occlusion)是一种GI,其简化形式SSAO可以用“微量高效”来形容,消耗得很少,得到的效果很好.环 境光遮蔽(ambient occlusion)的本质是计算在一 ...
- ORA-12541: TNS: 无监听程序 怎么解决
ORA-12541: TNS: 无监听程序 怎么解决? 刚学 oracle ORA-12541: TNS怎么回事,已经打开了所有的服务 fzxs 2008-3-14 下载知道客户端,10分钟内有问必答 ...
- 宁波Uber优步司机奖励政策(1月18日~1月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Working XML: Processing instructions and parameters
Adding support for multiple style sheets This month our hardworking columnist(专栏作家) adds support for ...
- POI HSSFColor 颜色索引对照表
POI HSSFColor 颜色索引对照表 . HSSFColor.GREY_80_PERCENT . HSSFColor.INDIGO . HSSFColor.PLUM HSSFColor.BROW ...
- Python:urllib和urllib2的区别(转)
原文链接:http://www.cnblogs.com/yuxc/ 作为一个Python菜鸟,之前一直懵懂于urllib和urllib2,以为2是1的升级版.今天看到老外写的一篇<Python: ...
- Adatper中获取宽高为0的问题
但是我们想在getView()中获取ImageView的宽和高存在问题,在getView()里面刚开始显示item的时候利用ImageView.getWidth() 获取的都是0,为什么刚开始获取不到 ...
- BINARY and varBINARY
BINARY(n) ,varBINARY(n): N代表字节数 utf8: mysql> CREATE TABLE t (c BINARY()); Query OK, rows affected ...