C# yield return 流程理解

代码如下:  在Documents1方法中使用yield return之后, 下次在进入Documents1方法就是从上一次yield return部分执行

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace C数据结构与算法
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> docs1 = new List<string>();
            docs1.Add("1");
            docs1.Add("2");
            docs1.Add("3");
            docs1.Add("4");
            docs1.Add("5");

            foreach (string item in Documents1(docs1))
            {
                Console.WriteLine("获取值: " + item);
                Thread.Sleep(2000);
            }

            Console.ReadKey();
        }

        static IEnumerable Documents1(List<string> docs)
        {
            foreach (var item in docs)
            {
                if (item != "4")
                {
                    Console.WriteLine("返回值: " + item);
                    //yield return语句返回集合的一个元素,并移动到下一个元素上
                    yield return item;
                    Console.WriteLine("用完值: " + item);
                }

            }

            Console.Write(" {0} ", "循环完毕");
        }
    }
}

时间: 2024-10-01 07:52:47

C# yield return 流程理解的相关文章

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用法

本文实例讲述了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 用法与解析 本文参考自:http://www.jb51.net/article/54810.htm 当初没有认真理解 yield 这个关键字,现在又遇到了依旧不理解,为了以后不再为了 yield 困惑,决定好好研究一下 yield 的用法与意义: yield 从字面上理解有“退位,屈服”的意思,转一下弯就理解成“权限转移”,也就是将控制权交给别人,在这里就是把集合里满足条件(如果没有过滤条件,就是全体)的个体的操作转移给另一个对象. class Program {

yield return简单示例

List<int> list = new List<int>() { 1,2,3,4 }; // 需求:返回所有大于n的数 // 方法1(不使用yield return) IEnumerable<int> WithoutYield(List<int> list, int n) { List<int> result = new List<int>(); foreach (int i in list) { if (i > n) {

yield return,yield break

转自, http://www.cnblogs.com/kingcat/archive/2012/07/11/2585943.html yield return 表示在迭代中下一个迭代时返回的数据,除此之外还有yield break, 其表示跳出迭代,为了理解二者的区别我们看下面的例子 class A : IEnumerable{    private int[] array = new int[10]; public IEnumerator GetEnumerator()    {       

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>(){

return 与 yield return 的区别

昨晚虽睡得不怎么样,今天居然有点儿"顿悟"的感觉. yield似乎在枚举器里看过,但没什么印象了,各种搜索一通,很多是转的,还长篇大论的很多文字,不知怎么有不想看下去的感觉,喝了杯咖啡,抬头看着屏幕,突然觉得我也顿悟了: 不同点总结如下: 1) 返回值类型不同: a)   return 返回其后面表达式的值可以是任何类型,暂称其为T类型: b)   而yield return 返回IEnumerable<T>类型,总是个可枚举的对象,yield return 后面的表达式为

记一次被yield return坑的历程。

事情的经过是这样的: 我用C#写了一个很简单的一个通过迭代生成序列的函数. public static IEnumerable<T> Iterate<T>(this Func<T, T> f, T initVal, int length) { Checker.NullCheck(nameof(f), f); Checker.RangeCheck(nameof(length), length, 0, int.MaxValue); var current = initVal

Unity StartCoroutine 和 yield return 深入研究

StartCoroutine和yield return表面意思很好理解,StartCoroutine就是开启一个协程,yield return 是迭代器块返回调用迭代的地方. 是吧?不知道你什么感觉,反正我觉得,还是需要深入研究一下的.OK,here we go! 首先,先看一下StartCoroutine在Unity官方的解释. 意思是:一个协程的执行可以在任何地方用yield语句来暂停,yield return的值决定了什么时候协程恢复执行.协程在协调在几帧中执行的操作时有极大的用处.协程几