C# 中 yield return 的作用是什么?


Yield 关键字有助于对集合进行自定义状态迭代。这意味着,当我们使用 yield 关键字时,控制会在调用方函数和源之间往返,反之亦然。

示例

 实时演示

using System;
using System.Collections.Generic;
namespace DemoApplication {
   class Program {
      static List<int> numbersList = new List<int> {
         1, 2, 3, 4, 5
      };
      public static void Main() {
         foreach(int i in RunningTotal()) {
            Console.WriteLine(i);
         }
         Console.ReadLine();
      }
      public static IEnumerable<int> RunningTotal() {
         int runningTotal = 0;
         foreach(int i in numbersList) {
            runningTotal += i;
            yield return (runningTotal);
         }
      }
   }
}

输出

上述程序的输出为

1
3
6
10
15

在上述示例中,在 main 方法的 for each 中,我们遍历运行总计的数字列表。因此,只要调用 yield return,控制就会返回到 main 方法的每个循环并打印值。在打印值后,控制会再次进入 running total 的每个循环。需要注意的一件事是,先前的值也已保留。简单来说,yield 关键字有效创建了集合项的惰性枚举,它可以高效得多。

更新日期: 08-Aug-2020

3 千+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.