当前位置: 首页 > news >正文

yield return关键字怎么使用?

在迭代器块中用于向枚举数对象提供值或发出迭代结束信号。它的形式为下列之一:

复制代码
yield return <expression>;
yield break;

备注
计算表达式并以枚举数对象值的形式返回;expression 必须可以隐式转换为迭代器的 yield 类型。

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

不允许不安全块。

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

yield 语句不能出现在匿名方法中。有关更多信息,请参见匿名方法(C# 编程指南)。

当和 expression 一起使用时,yield return 语句不能出现在 catch 块中或含有一个或多个 catch 子句的 try 块中。有关更多信息,请参见异常处理语句(C# 参考)。

示例
在下面的示例中,迭代器块(这里是方法 Power(int number, int power))中使用了 yield 语句。当调用 Power 方法时,它返回一个包含数字幂的可枚举对象。注意 Power 方法的返回类型是 IEnumerable(一种迭代器接口类型)。

复制代码
// yield-example.cs
using System;
using System.Collections;
public class List
{
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);
}
}
}

复制代码
2 4 8 16 32 64 128 256

转载于:https://www.cnblogs.com/ChineseMoonGod/p/5345439.html

相关文章:

  • static记录
  • 最近的计划
  • 谈谈我写博客的一些想法
  • Oracle官方并发教程之原子变量
  • 解决Xcode 7编译错误:does not contain bitcode
  • 《写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示》...
  • jQuery全屏背景图片导航
  • 学习进度表
  • 各种加解密算法简介
  • Kafka源码分析之Sender
  • 2016 Google hosts 持续更新【更新于:2016-04-10】
  • 学C#你应该熟练使用ILDasm和Reflector【带视频教程】
  • 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度
  • 关于java写进mysql中文乱码问题
  • 从客户端(?)中检测到有潜在危险的 Request.Path 值 的解决方案
  • 10个确保微服务与容器安全的最佳实践
  • Consul Config 使用Git做版本控制的实现
  • Invalidate和postInvalidate的区别
  • iOS | NSProxy
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • KMP算法及优化
  • Mocha测试初探
  • Next.js之基础概念(二)
  • ReactNativeweexDeviceOne对比
  • vue总结
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 前端面试之闭包
  • 如何设计一个微型分布式架构?
  • 一道闭包题引发的思考
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • Prometheus VS InfluxDB
  • ​业务双活的数据切换思路设计(下)
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)STL算法之遍历容器
  • (4) PIVOT 和 UPIVOT 的使用
  • (C#)一个最简单的链表类
  • (二)springcloud实战之config配置中心
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (十六)一篇文章学会Java的常用API
  • (转载)CentOS查看系统信息|CentOS查看命令
  • *2 echo、printf、mkdir命令的应用
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net MySql
  • .Net 代码性能 - (1)
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [Android]Android开发入门之HelloWorld