yield return
是 C# 语言中的一个关键字组合,用于创建迭代器方法。它允许方法在每次调用时返回序列中的下一个元素,而不是一次性返回整个序列。使用 yield return
的主要优点包括:
-
内存效率 :可以按需生成和返回元素,减少内存开销。
-
提高可读性 :代码更简洁,易于阅读,因为它消除了在循环中手动维护状态或管理集合的需要。
-
惰性计算 :元素只有在需要时才会被计算和返回,这可以提高性能,特别是在处理大型数据集时。
-
简化代码 :简化了复杂的迭代逻辑,减少了样板代码。
下面是一个使用 yield return
的简单示例:
public static IEnumerable<int> GetNumbers(int max)
{
for (int i = 1; i <= max; i++)
{
yield return i;
}
}
// 使用 GetNumbers 方法
foreach (int number in GetNumbers(10))
{
Console.WriteLine(number);
}
在这个例子中,GetNumbers
方法使用 yield return
逐个返回从 1 到 max
的整数。当 foreach
循环遍历 GetNumbers
方法返回的整数序列时,GetNumbers
方法会在每次迭代时执行,但不会将整个序列加载到内存中,而是在需要时按需生成序列中的每个元素。
需要注意的是,yield return
与 return
关键字在 C# 中有着本质的区别:return
用于结束方法的执行并返回一个值,而 yield return
用于创建一个迭代器,允许方法在每次调用时返回序列中的下一个值。