一、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 方法则是边遍历边输出。

28.yield return 语法的更多相关文章

  1. 可惜Java中没有yield return

    项目中一个消息推送需求,推送的用户数几百万,用户清单很简单就是一个txt文件,是由hadoop计算出来的.格式大概如下: uid caller 123456 12345678901 789101 12 ...

  2. using和yield return

    C#中的using和yield return混合使用 最近写代码为了为了省事儿用了几个yield return,因为我不想New一个List<T>或者T[]对象再往里放元素,就直接返回IE ...

  3. C#中的using和yield return混合使用

    最近写代码为了为了省事儿用了几个yield return,因为我不想New一个List<T>或者T[]对象再往里放元素,就直接返回IEnumerable<T>了.我的代码里还有 ...

  4. yield学习续:yield return迭代块在Unity3D中的应用——协程

    必读好文推荐: Unity协程(Coroutine)原理深入剖析 Unity协程(Coroutine)原理深入剖析再续 上面的文章说得太透彻,所以这里就记一下自己的学习笔记了. 首先要说明的是,协程并 ...

  5. C#中的yield return与Unity中的Coroutine(协程)(上)

    C#中的yield return C#语法中有个特别的关键字yield, 它是干什么用的呢? 来看看专业的解释: yield 是在迭代器块中用于向枚举数对象提供值或发出迭代结束信号.它的形式为下列之一 ...

  6. C# 基础小知识之yield 关键字 语法糖

    原文地址:http://www.cnblogs.com/santian/p/4389675.html 对于yield关键字我们首先看一下msdn的解释: 如果你在语句中使用 yield 关键字,则意味 ...

  7. C#yield return和yield break

    C#yield return和yield break 晚上好,各位.今天结合书中所讲和MSDN所查,聊下yield关键字,它是我们简化迭代器的关键. 如果你在语句中使用了yield关键字,则意味着它在 ...

  8. python yield from 语法

    python yield from 语法 yield语法比较简单, 教程也很多 , yield from的中文讲解很少 , python官网是这样解释的 PEP 380 adds the yield ...

  9. Python3中的yield from语法

    Python3中的yield from语法 by Kay Zheng Tags: python, 协程, generator 30 March 2014 2016-2-23 更新 這篇文章是兩年前寫的 ...

  10. c#的yield return

    4.1 迭代器块 一个迭代器块(iterator block)是一个能够产生有序的值序列的块.迭代器块和普通语句块的区别就是其中出现的一个或多个yield语句. yield return语句产生迭代的 ...

随机推荐

  1. 模型驱动设计的构造块(上)——DDD

    为了保证软件实践得简洁并且与模型保持一致,不管实际情况如何复杂,必须运用建模和设计的实践. 某些设计决策能够使模型和程序紧密结合在一起,互相促进对方的效用.这种结合要求我们注意每个元素的细节,对细节问 ...

  2. 使用 System.Text.Json 时,如何处理 Dictionary 中 Key 为自定义类型的问题

    在使用 System.Text.Json 进行 JSON 序列化和反序列化操作时,我们会遇到一个问题:如何处理字典中的 Key 为自定义类型的问题. 背景说明 例如,我们有如下代码:   // 定义一 ...

  3. C++进阶(哈希)

    vector容器补充(下面会用到) 我们都知道vector容器不同于数组,能够进行动态扩容,其底层原理:所谓动态扩容,并不是在原空间之后接续新空间,因为无法保证原空间之后尚有可配置的空间.而是以原大小 ...

  4. [python] 基于matplotlib实现树形图的绘制

    树形图Tree diagram (代码下载) 本文旨在描述如何使用Python实现基本的树形图.要实现这样的树形图,首先需要有一个数值矩阵.每一行代表一个实体(这里是一辆汽车).每列都是描述汽车的变量 ...

  5. CodeForces 构造题专项解题报告

    CodeForces 构造题专项解题报告 \(\newcommand \m \mathbf\)\(\newcommand \oper \operatorname\) \(\text{By DaiRui ...

  6. Go读取yaml文件到struct类

    1.yaml文件准备 common: secretid: AKIDxxxxx secretKey: 3xgGxxxx egion: ap-guangzhou zone: ap-guangzhou-7 ...

  7. 小项目中vuex使用频率不太多我们完全可以用provide inject 来代替可以让项目小不少

    在一般小型项目中vuex实在是太浪费了所以我们可以用到 vue中的provide inject 代替 1.在vue3中我们先另起一个 文件创建一个全局的状态和方法的地方(如果你的全局状态特别的多记得要 ...

  8. chrome实现下载文件JS代码弹出'另存为'窗口

    1.TXT类型文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  9. 万字详解,吃透 MongoDB!

    本文已经收录进 JavaGuide(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识.) 少部分内容参考了 MongoDB 官方文档的描述,在此说明一下. MongoDB ...

  10. BUG日记--——Linux安装Docker

    1.yum makecache fast不适合Centos8 2.解决办法 3.doucke的使用 1.关闭防火墙 # 关闭 systemctl stop firewalld # 禁止开机启动防火墙 ...