一、yield return

  该语句可以实现在 foreach 循环中,在其他方法边遍历边输出。如下:

    class Program
{
private List<int> list = new List<int>();
//给集合添加元素
private void Dimo()
{
for (int i = 0; i < 11; i++)
{
list.Add(i);
}
}
//输出偶数(一般方法无法实现一边遍历一边在其他方法中输出,
//在其他方法中只能输出最后的结果。如下)
IEnumerable<int> GetAllEvenNumber()
{
Dimo();
List<int> result = new List<int>();
foreach (int item in list)
{
if (item%2 == 0)
{
result.Add(item);
}
}
return result;
}
//使用 yield return 算法
IEnumerable<int> GetAllEventNumberByYieldReturn()
{
Dimo();
foreach (int item in list)
{
if (item%2 == 0)
{
yield return item;
}
}
yield break;
}
//方法测试
private void Test()
{
Console.WriteLine("一般方法测试:");
foreach (int item in GetAllEvenNumber())
{
Console.WriteLine(item);
}
Console.WriteLine("yield return 方法测试:");
foreach (int item in GetAllEventNumberByYieldReturn())
{
Console.WriteLine(item);
}
}
static void Main(string[] args)
{
Program obj = new Program();
obj.Test();
Console.ReadKey();
}
}
-- 输出结果 --

一般方法测试:
0
2
4
6
8
10
yield return 方法测试:
0
2
4
6
8
10
0
2
4
6
8
10

解析:

  一般方法是把结果全部加载到内存中再遍历,而 yield return 方法则是边遍历边输出。

最新文章

  1. 2016-2017-2 《Java程序设计》预备作业2总结
  2. 解决java使用https协议请求出现证书不信任问题(PKIX path building failed)
  3. linux下core dump【总结】
  4. 做一些Spring AOP做过的事,封装 jdk动态代理成为一个黑盒子
  5. 富有表现力的javascript
  6. Eclipse下配置tomcat且使用eclipse开启debug模式,集成JAD反编译插件
  7. bistu新生-1005
  8. innodb 悲观锁,乐观锁
  9. [React] React Router: Named Components
  10. _splitpath / _wsplitpath 将绝对路径分割为盘符、路径、文件名、扩展名。
  11. gridview中button事件处理
  12. (.NET高级课程笔记)泛型总结
  13. docker容器自动化部署(一)
  14. CodeForces Round #548 Div2
  15. Codeforces Round #441 Div. 1
  16. Linux基础实操一
  17. USB HID设备报告描述符详解(转)
  18. SeaweedFS上手使用指南
  19. git出现warning: LF will be replaced by CRLF的解决方法
  20. 2.16 C++类与new和delete操作符

热门文章

  1. markdown语法使用
  2. cs231n__2. K-nearest Neighbors
  3. 基于Unet+opencv实现天空对象的分割、替换和美化
  4. Jupyter Notebook入门指南
  5. 阿里云Imagine Computing创新技术大赛决赛启幕!
  6. elasticsearch之search template
  7. SOFAJRaft依赖框架Disruptor浅析
  8. c++ 跑酷小游戏之用户体验plus
  9. 鸿蒙系统应用开发之基于API6的蓝牙开发
  10. 练习_请使用日期时间相关的API