/*
*
* 学习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;
}

}
}

最后直接代码测试跑一遍就很清楚了!!!!!!!

最新文章

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

热门文章

  1. mybatis动态标签——sql标签
  2. lg8935 [JRKSJ R7] 茎 题解
  3. httpRunner使用汇总
  4. Redis入门级简单安装使用
  5. 记录一次Python环境安装出现的问题(已安装java)
  6. lbaas
  7. Cookie解码编码
  8. ubuntu 查看已安装软件命令
  9. Hello,Golang
  10. Lazarus 开发环境使用技巧