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 关键字实际上创建了一个基于集合项的惰性枚举,从而可以提高效率。

