精选文章 C# yield关键字

C# yield关键字

作者:weixin_33888907 时间: 2021-07-06 09:10:32
weixin_33888907 2021-07-06 09:10:32
【摘要】
                     
 
   
   
    前段时间,在一次面试中被问到yield关键字,当时懵了,回来查了一下,与诸君分享。
    
    
    
     yield 关键字向编译器指示它所在的方法是迭代器块。 
     编译器生成一个类来实现迭代器块中表示的行为。 
     在迭代器块中,yield 关键字与 return 关键字结合使用,向枚...
前段时间,在一次面试中被问到yield关键字,当时懵了,回来查了一下,与诸君分享。
yield 关键字向编译器指示它所在的方法是迭代器块。 编译器生成一个类来实现迭代器块中表示的行为。 在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值。 这是一个返回值,例如,在 foreach 语句的每一次循环中返回的值。 yield 关键字也可与 break 结合使用,表示迭代结束。  
yield 语句 两种形式:
yield return ;
yield break;
在 yield return 语句中,将计算 expression 并将结果以值的形式返回给枚举器对象;expression 必须可以隐式转换为 yield 类型的迭代器。
在 yield break 语句中,控制权将无条件地返回给迭代器的调用方,该调用方为枚举器对象的 IEnumerator.MoveNext 方法
(或其对应的泛型 System.Collections.Generic .IEnumerable)或 Dispose 方法。
yield 语句只能出现在 iterator( 迭代器) 块中,这种块可作为方法、运算符或访问器的主体实现。 这类方法、运算符或访问器的体受以下约束的控制:
  • 不允许不安全块。
  • 方法、运算符或访问器的参数不能是 ref 或 out。
  • yield return 语句不能放在 try-catch 块中的任何位置。 该语句可放在后跟 finally 块的 try 块中。
  • yield break 语句可放在 try 块或 catch 块中,但不能放在 finally 块中。
yield 语句不能出现在匿名方法中。  
当和 expression 一起使用时,yield return 语句不能出现在 catch 块中或含有一个或多个 catch 子句的 try 块中。
下面的示例使用了yield,并返回IEnumerable类型( 一种迭代器接口类型
 1   public class  NumberList
 2 {
 3 //  Create an array of integers.
 4   public   static   int [] ints  =  {  1 2 3 5 8 13 21 34 55 89 144 233 377  };
 5
 6 //  Define a property that returns only the even numbers.
 7   public   static  IEnumerable < int >  GetEven()
 8 {
 9 //  Use yield to return the even numbers in the list.
10   foreach  ( int  i  in  ints)
11 if  (i  %   2   ==   0 )
12 yield   return  i;
13 }
14
15   static   void  Main( string [] args)
16 {
17
18 //  Display the even numbers.
19   Console.WriteLine( " Even numbers " );
20 foreach  ( int  i  in  NumberList.GetEven())
21 Console.WriteLine(i);
22 }
23
24 }

转载于:https://blog.51cto.com/2063557/536829

勿删,copyright占位
您找到想要的结果了吗?
C# yield关键字
提交成功!非常感谢您的反馈,我们会继续努力做到更好
分享文章到微博
分享文章到朋友圈

上一篇:Silverlight菜单控件 — CurveMenu

下一篇:JavaScript 学习笔记1

您可能感兴趣

  • C#字符串操作

    最近做项目的时候在解析一串非常复杂的字符串时发现自己根本没记住几种相关字符串的操作,今天刚好有时间就整理一下常用的字符串操作,以后也方便。 string oldString = "123|456";  1.Trim清空 string newString = oldString.Trim(); //123|456   将字符串两边的空格清空 s...

  • 动态查询 sql关键字

    1、动态SQL:if 语句   根据 username 和 sex 来查询数据。如果username为空,那么将只根据sex来查询;反之只根据username来查询   首先不使用 动态SQL 来书写 1 2 3 4 5 6 <select id="selectUserByUsernameAndSex"         resultType...

  • 【C#】Dapper使用Mysql实例,Dapper使用Mysql简单范例,DapperHelper

     直接上代码,可以直接作为DapperHelper: using MySql.Data.MySqlClient; //自行网上下载引用MySql.Data.dll using System.Configuration; using System.Data; using Dapper;                //自行网上下载引用Dapper....

  • C#计算月的最后一天

    //-------------------试用期计算开始----------------------------             DateTime tStart = DateTime.Parse("2013/6/27 0:00:00");             int qiXian = 3;             DateTime tEn...

  • JavaScript关键字,保留字和标识符

    07-JavaScript基础-关键字,保留字和标识符 关键字和保留字 什么是关键字? JavaScript语言用于程序控制或执行特定操作的英语单词;它们是被JavaScript语言赋予了特殊含义的英文单词;...

  • 第24节 Java成员变量的隐藏、方法的重写和super关键字

    第24节 Java成员变量的隐藏、方法的重写和super关键字 Java成员变量的隐藏 在编写子类时,我们仍然可以声明成员变量,一种特殊的情况是,如果所声明的成员变量的名字和从父类继承来的成员变量的名字相同(声明的...

  • WebDriver高级应用----在Ajax方式产生的浮动框中,点击选择包含某个关键字的选项

    目的:     有些被测试页面包含Ajax的局部刷新机制,并且会产生显示多条数据的浮动框,需要单击选择浮动框中包含某个关键字的选项。 测试地址:     http://www.sogou.com 第一种方法:通过模拟键盘下箭头进行选择悬浮框选项 实例代码: # coding=utf-8 from selenium import web...

  • JAVA笔记——this关键字

    1. 表示本类的属性  this.name = name; 2. 调用本类的普通方法:this.方法(); 3. 调用本类构造方法:this(); this(); 要放在构造方法的行首,不能放在普通方法中。构造方法使用this()相互调用时,至少保留一个构造方法没有调用其他构造方法。  4. this 表示...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。
C# yield关键字介绍:华为云为您免费提供C# yield关键字在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多C# yield关键字的相关内容。| 移动地址: C# yield关键字 | 写博客