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;
}
}
}
最后直接代码测试跑一遍就很清楚了!!!!!!!
最新文章
- centos下安装php扩展php-memcached
- php 过滤英文标点符号 过滤中文标点符号
- HDU-4534 郑厂长系列故事——新闻净化 AC自动机+DP
- RCA端子颜色(红、白、黄)
- jQuery.smoove — jQuery和CSS3炫酷滚动页面内容元素动画特效插件
- web压力测试 - http_load
- Duplicate headers received from server
- C#委托的回调机制
- QWidget可以设置QStyle,它可以绘制很多东西(具体内容没研究,待续)
- 个人作业2 — 英语学习APP的案例分析
- 【R语言系列】read.table报错incomplete final line found by readTableHeader
- python绘制散点图,柱状图和折线图
- the python challenge闯关记录(0-8)
- eclipse 中 git 解决冲突(重点)
- EF中关于日期字值的处理
- 避免jquery的click多次绑定方法
- 11.享元模式(Flyweight Pattern)
- Python socket实现处理多个连接
- JavaScript基础视频教程总结(031-040章)
- ScheduledThreadPoolExecutor源码解读