C#中yield return的用法示例

using System;
using System.Collections.Generic;

namespace YieldReturn
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

            var resultNormal = EvenNormal(list);
            foreach (var item in resultNormal)
            {
                Console.WriteLine(item);
            }

            var resultYieldReturn = EvenYieldReturn(list);
            foreach (var item in resultYieldReturn)
            {
                Console.WriteLine(item);
            }
        }

        static IEnumerable<int> EvenNormal(List<int> list)
        {
            var result = new List<int>();
            foreach (var item in list)
            {
                if (item % 2 == 0)
                {
                    result.Add(item);// 类似DataSet(整个结果集加载到内存中),适合少量数据的遍历
                }
            }
            return result;
        }

        static IEnumerable<int> EvenYieldReturn(List<int> list)
        {
            foreach (var item in list)
            {
                if (item % 2 == 0)
                {
                    yield return item;// 类似DataReader(读取一条返回一条),适合海量数据的遍历
                }
            }
            yield break;
        }
    }
}

原文地址:https://www.cnblogs.com/xiaowangzhi/p/9446572.html

时间: 2024-10-15 17:53:30

C#中yield return的用法示例的相关文章

C#中yield return用法分析(转载自shichen2014)

本文实例讲述了C#中yield return用法,并且对比了使用yield return与不使用yield return的情况,以便读者更好的进行理解.具体如下: yield关键字用于遍历循环中,yield return用于返回IEnumerable<T>,yield break用于终止循环遍历. 有这样的一个int类型的集合: ? 1 2 3 4 static List<int> GetInitialData() {   return new List<int>(){

C#中yield return用法分析

这篇文章主要介绍了C#中yield return用法,对比使用yield return与不使用yield return的流程,更直观的分析了yield return的用法,需要的朋友可以参考下. 本文实例讲述了C#中yield return用法,并且对比了使用yield return与不使用yield return的情况,以便读者更好的进行理解.具体如下: yield关键字用于遍历循环中,yield return用于返回IEnumerable<T>,yield break用于终止循环遍历. 有

造轮子_C#中yield return用法分析

厂址: http://www.jb51.net/article/54810.htm static List<int> GetInitialData() {   return new List<int>(){1,2,3,4}; } 打印出所有值大于2的元素 不使用yield return的实现 static IEnumerable<int> FilterWithoutYield() {   List<int> result = new List<int&

C#中yield return用法

1.yield关键字用于遍历循环中,yield return用于返回IEnumerable<T>,yield break用于终止循环遍历 不使用yield return的实现 static IEnumerable<int> FilterWithoutYield() { List<int> result = new List<int>(); foreach (int i in GetInitialData()) { if (i > 2) { result

yield return的用法简介

使用yield return 语句可一次返回一个元素. 迭代器的声明必须满足以下要求: 返回类型必须为 IEnumerable.IEnumerable<T>.IEnumerator 或 IEnumerator<T>. 返回 IEnumerable 或 IEnumerator 的迭代器的 yield 类型为 object.如果迭代器返回 IEnumerable<T> 或 IEnumerator<T>,则必须将yield return 语句中的表达式   类型隐

C#中this指针的用法示例

这篇文章主要介绍了C#中this指针的用法,对初学者而言是非常重要的概念,必须加以熟练掌握,需要的朋友可以参考下. 本文实例展示了C#中this指针的用法,对于初学者进一步牢固掌握C#有很大帮助,具体内容如下: 一.this指针是什么: 这里有一些面向对象编程的概念需要说明:类(Class)的概念和对象(Object)的概念类是对事物概括,也是C#编码时所有代码归属的基本单位:而对象是对类的实例化,也就是C#里new方法的返回值.写代码是不能直接用操作类,而只能先实例化类,然后我们用这个类被实例

Linux中find命令大全-用法示例

Linux中find常见用法示例 find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数: path: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.-print: find命令将匹配的文件输出到标准输出.-exec: find命令对匹配的文件执行该参数所给出的shell命令.相应命令的形式为'command' { } \;,注意{ }和\:之间的空格.-ok: 和-exec的作用相同,只

详解Python中yield生成器的用法

yield是生成的意思,但是在python中则是作为生成器理解,生成器的用处主要可以迭代,这样简化了很多运算模型(还不是很了解是如何简化的). yield是一个表达式,是有返回值的. 当一个函数中含有yield时,它不再是一个普通的函数,而是一个生成器.当该函数被调用时不会自动执行,而是暂停, 参考:http://www.aichengxu.com/view/64610  见第一个例子: 例1: >>> def mygenerator(): ... print 'start...' ..

js中setTimeout/setInterval定时器用法示例

js中setTimeout(定时执行一次)和setInterval(间隔循环执行)用法介绍. setTimeout:在指定的毫秒数后调用指定的代码段或函数:setTimeout示例代码 function timedMsg() { setTimeout("alert('7 seconds!')",5000)//5秒后弹出信息 } setTimeout("timedMsg()",2000);//2秒后执行方法 timedMsg setInterval:在指定的时间间隔内