博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中yield用法
阅读量:6192 次
发布时间:2019-06-21

本文共 1125 字,大约阅读时间需要 3 分钟。

  hot3.png

yield 关键字向编译器指示它所在的方法是迭代器块。编译器生成一个类来实现迭代器块中表示的行为。在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值。这是一个返回值,例如,在 foreach 语句的每一次循环中返回的值。yield 关键字也可与 break 结合使用,表示迭代结束。

例子:

yield return <expression>;
yield break;

在 yield return 语句中,将计算 expression 并将结果以值的形式返回给枚举器对象;expression 必须可以隐式转换为 yield 类型的迭代器。

在 yield break 语句中,控制权将无条件地返回给迭代器的调用方,该调用方为枚举器对象的 方法(或其对应的泛型)或 Dispose 方法。

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

  • 不允许不安全块。

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

  • yield return 语句不能放在 try-catch 块中的任何位置。该语句可放在后跟 finally 块的 try 块中。

  • yield break 语句可放在 try 块或 catch 块中,但不能放在 finally 块中。

yield 语句不能出现在匿名方法中。有关更多信息,请参见。

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

ExpandedBlockStart.gif

 

public class List

{
//using System.Collections;
public static IEnumerable Power(int number, int exponent)
{
int counter = 0;
int result = 1;
while (counter++ < exponent)
{
result = result * number;
yield return result;
}
}
static void Main()
{
// Display powers of 2 up to the exponent 8:
foreach (int i in Power(2, 8))
{
Console.Write("{0} ", i);
}
}
}
/*
Output:
2 4 8 16 32 64 128 256
*/

转载于:https://my.oschina.net/wzzz/blog/168454

你可能感兴趣的文章
短路逻辑
查看>>
Unity3D循环滚动的背景图片,制作方法
查看>>
关于android开发工具无法识别android手机的情况总结
查看>>
Intellij Idea使用频率较高的几个快捷键
查看>>
阿里巴巴热招求推荐求转发
查看>>
iphone-common-codes-ccteam源代码 CCPlistFileWritter.m
查看>>
第2章 数字之魅——数字中的技巧2.1
查看>>
谈谈等概率不重复随机数生成算法中的大学问
查看>>
仲兆鹏 160809329
查看>>
Vue实战狗尾草博客后台管理系统第三章
查看>>
UNIX文件I/O
查看>>
【开发技术】json
查看>>
【ES6】函数
查看>>
Java中的24种设计模式与7大原则 (转)
查看>>
SpringCloud中Rabbitmq的使用
查看>>
sqlserver2000分页
查看>>
Ural1519 Formula 1(插头dp)
查看>>
大数据系列修炼-Scala课程10
查看>>
斐波那契数列
查看>>
MVC 默认路由 Areas
查看>>