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

csharpserver side programmingprogramming更新于 2025/10/2 2:52:17

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 方法并打印值。打印完值后,程序会再次转到 for each 函数。这里需要注意的是,之前的值也会被保留。因此,yield 关键字实际上创建了一个基于集合项的惰性枚举,从而可以提高效率。


相关文章