yield是C#为了简化遍历操作实现的语法糖。在语句中使用 yield 关键字,表示在该关键字所在的方法、运算符或 get 访问器是迭代器。有两种形式:

yield return <expression>;
yield break;

这个还是看个实例更清楚:

static void Main(string[] args)
{
foreach (int i in Power(, ))
{
Console.Write("{0} ", i);
}
// Output: 2 4 8 16 32 64 128 256 Console.ReadKey();
} public static System.Collections.IEnumerable Power(int number, int exponent)
{
int result = ;
for (int i = ; i < exponent; i++)
{
result = result * number;
yield return result;
}
}

此处,使用了 yield return 返回每一个元素节点。使用  foreach  语句或 LINQ 查询,则使用迭代器方法。 foreach 循环的每次迭代调用迭代器方法。 当 yield return 语句在迭代器方法时为止,expression 返回,并且,代码的当前位置保留。 当下次调用迭代器函数时执行从该位置重新启动。通过调试,我们可以看到代码的执行顺序大致如下:

这个图中标记的顺序可能有点抽象,不知道大家能不能理解?~~~

除此之外还有 yield break , 其表示结束迭代,跳出循环。不理解,看实例:

static void Main(string[] args)
{
foreach (int i in Power(, ))
{
Console.Write("{0} ", i);
}
// Output: 2 4 8 16 Console.ReadKey();
} public static System.Collections.IEnumerable Power(int number, int exponent)
{
int result = ;
for (int i = ; i < exponent; i++)
{
result = result * number;
if (i == )
yield break;
yield return result;
}
}

参考文档

  1. https://msdn.microsoft.com/library/9k7k7cf0%28v=vs.110%29.aspx
  2. http://www.cnblogs.com/kingcat/archive/2012/07/11/2585943.html
  3. http://www.cnblogs.com/CareySon/archive/2009/12/16/1625469.html

最新文章

  1. csc.rsp Nuget MVC/WebAPI 5.0、SignalR 2.0、Rx、Json、Azure、EntityFramework、OAuth、Spatial
  2. [ActionScript 3.0] 图片左右循环移动
  3. 状态压缩 HDU 3091
  4. ADS1.2安装教程
  5. 【NOIP训练】【数论】超级计算机
  6. JavasScript基数排序
  7. 嵌套json
  8. WINDOWS程序设计对话框加载显示bmp图像及刷新
  9. 压缩感知重构算法之子空间追踪(SP)
  10. UNIX网络编程——非阻塞connect:时间获取客户程序
  11. 模块2 hashlib;configparser; logging;
  12. leecode第二百三十一题(2的幂)
  13. JS小积累(一)— 判断在线离线
  14. react-native init的时候出现问题:npm WARN React-native@0.35.0 requires a peer of react@~15.3.1 but none was
  15. java基础知识-数据类型及转换
  16. asp.net C#取Excel 合并单元格内容
  17. keil_4/MDK各种数据类型占用的字节数
  18. 使用iometer测试
  19. sqlserver导出为EXcel--CSV格式
  20. eml文件解析实例,简历信息抓取工具

热门文章

  1. H5内容安全尺寸
  2. hdu畅通工程
  3. POJ1986(LCA应用:求两结点之间距离)
  4. bzoj4176
  5. WPF学习系列之五(WPF控件)
  6. Auto Layout Guide----(三)-----Anatomy of a Constraint
  7. 【机器学习】决策树C4.5、ID3
  8. 牛客月赛 G-many sum(筛因子)
  9. Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等
  10. Jodd发送邮件