YieldReturn语法解析
/*
*
* 学习Yield Return 语法
* 使用两个方法,显示1 - 100之间的全部偶数
*
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace YieldReturn语法解析
{
class Program
{
/// <summary>
/// 结论:Yield Return关键字的作用就是退出当前函数,
/// 并且会保存当前函数执行到什么地方,也就上下文。
/// 你发现没下次执行这个函数上次跑来的代码是不会重复执行的,
/// </summary>
static private List<int> _numArray;
Program()
{
_numArray = new List<int>();//用来保存1-100的整数
for (int i = 1; i <= 100; i++)
{
_numArray.Add(i);//将100个整数保存到list集合中
}
}
static IEnumerable<int> GetAllEvenNumber()
{
List<int> result = new List<int>();
foreach (int item in _numArray)
{
if(item % 2 == 0)//判断是不是偶数,若是则存到result集合中
{
//result.Add(item);//返回当前偶数
yield return item;//返回当前偶数 不用循环遍历添加偶数到集合中
}
}
//return result;
yield break;
}
static public void TestMethod()
{
foreach (var item in GetAllEvenNumber())
{
Console.WriteLine("输出偶数:" + item +" "+ DateTime.Now); //输出偶数测试
}
Console.ReadLine();
}
static void Main(string[] args)
{
new Program();
TestMethod();
//返回偶数集合变量 可能有人会觉得奇怪返回类型不是List<int>这样可以吗
//这个就要回到我们的里氏替换原则了,子类是可以替换父类的,也就是当父类用
//比如我这个方法是想得到IEnumerable<int> 类型变量,但是我给了List<int>类型变量
//注意List<int> 是继承 IEnumerable<int> 的,什么意思当我们把子类当父类使用,
//那么大才小用,因为子类很多都是继承父亲,你自身增加很多字段或者方法,这样就不能用了。
return result;
//yield break;
}
}
}
最后直接代码测试跑一遍就很清楚了!!!!!!!
YieldReturn语法解析的更多相关文章
- With语句以及@contextmanager的语法解析
with 语句以及@contextmanager的语法解析 with语句可以通过很简单的方式来替try/finally语句. with语句中EXPR部分必须是一个包含__enter__()和__e ...
- MySQL- -Join语法解析与性能分析
Mysql Join语法解析与性能分析 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ...
- 更改AngularJS的语法解析符号
// 更改AngularJS的语法解析符号 app.config(function ($interpolateProvider) { $interpolateProvider.startSymbol( ...
- 转换器4:手写PHP转Python编译器,语法解析部分
写完词法部分,又有很多杂事,周末终于有空来实现伟大的语法解析部分了. 撸完代码之后发现,程序太短了,不算上状态机,才186行(含注释),关键代码不到100行.运行调试过后,发现还行.居然可以解析One ...
- 在.NET Core中使用Irony实现自己的查询语言语法解析器
在之前<在ASP.NET Core中使用Apworks快速开发数据服务>一文的评论部分,.NET大神张善友为我提了个建议,可以使用Compile As a Service的Roslyn为语 ...
- Generator函数语法解析
转载请注明出处: Generator函数语法解析 Generator函数是ES6提供的一种异步编程解决方案,语法与传统函数完全不同.以下会介绍一下Generator函数. 写下这篇文章的目的其实很简单 ...
- JSP编译成Servlet(一)语法树的生成——语法解析
一般来说,语句按一定规则进行推导后会形成一个语法树,这种树状结构有利于对语句结构层次的描述.同样Jasper对JSP语法解析后也会生成一棵树,这棵树各个节点包含了不同的信息,但对于JSP来说解析后的语 ...
- 用java实现编译器-算术表达式及其语法解析器的实现
大家在参考本节时,请先阅读以下博文,进行预热: http://blog.csdn.net/tyler_download/article/details/50708807 本节代码下载地址: http: ...
- 用java实现一个简易编译器-语法解析
语法和解析树: 举个例子看看,语法解析的过程.句子:“我看到刘德华唱歌”.在计算机里,怎么用程序解析它呢.从语法上看,句子的组成是由主语,动词,和谓语从句组成,主语是“我”,动词是“看见”, 谓语从句 ...
- 使用 java 实现一个简单的 markdown 语法解析器
1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...
随机推荐
- 普冉PY32系列(六) 通过I2C接口驱动PCF8574扩展的1602LCD
目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...
- TCP怎样保证可靠传输
TCP的可靠性保证 TCP主要提供了检验和,序列号/确认应答,超时重传,最大消息长度,滑动窗口控制等方法实现了可靠性传输. 检验和 通过检验和的方式,接收端可以检测出来数据是否有差错和异常,假如有差错 ...
- js-解决安卓手机软键盘弹出后,固定定位布局被顶上移问题
分析:软键盘弹出后,导致页面高度变化 解决方案:软键盘弹出后,修复页面高度 // 监听窗口变化 resizeScreen(){ if (!this.state.isIOS && thi ...
- ROS1 Qt5 CMake基本配置
############################################################################## # CMake ############# ...
- SFTP实现密钥登陆并上传文件
什么是SFTP,公开键认证,SFTP可不是FTP协议的扩展,他是基于SSH的文件传输协议. 而当SFTP服务器登录有客户端的公开键时,客户端就可以用自己的私有键去跟服务器握手(handshake)已实 ...
- VMware-共享文件夹挂载
[root@localhost jiangyinuo]# cd /cdromobash: cd: /cdromo: 没有那个文件或目录[root@localhost jiangyinuo]# cd / ...
- MessageUtil
1 public abstract class MessageUtil { 2 3 public static String changeMsg(CustomerReportQueryObject q ...
- shell脚本程序的撰写
一.让我们浏览一下整体步骤第一步,你要先用ll命令来列出该目录中都包含那些文件(目的是为了防止文件重名不利于查找等等).第二步 ,使用命令touch来建立一个shell脚本文件 , 后缀名为.sh : ...
- vue中aciton使用的自我总结
一.需求: 我需要从后台中获取菜单列表在路由守卫中进行限制. 二.遇到的问题: action中setMenuData的方法如下: actions: { setMenuData(context){ ge ...
- vim学习小结
参考书籍<Linux 从入门到精通>第二版(刘忆智 等编著) Vim编辑器 背景:Vim的设计哲学就是让使用者能够在主键盘区完成所有工作. vim是vi的增强版本,vim分为插入和命令两种 ...