在 C# 中,yield
关键字用于定义迭代器方法(Iterator Methods),并使其返回一个可枚举的序列。通过使用 yield
关键字,可以简化迭代器的实现,使其更加直观和易于理解。
使用 yield
关键字定义的方法被称为迭代器方法,它返回一个实现了 IEnumerable
或 IEnumerable<T>
接口的序列。在迭代器方法中,可以使用 yield return
语句来返回序列中的每个元素,以及使用 yield break
语句来终止迭代。
下面是一个简单的示例,演示了 yield
关键字的用法:
using System;
using System.Collections;public class NumberSequence
{public static IEnumerable GenerateSequence(){yield return 1;yield return 2;yield return 3;yield return 4;yield return 5;}
}public class Program
{public static void Main(){var sequence = NumberSequence.GenerateSequence();foreach (int number in sequence){Console.WriteLine(number);}}
}
在上面的示例中,NumberSequence
类定义了一个静态方法 GenerateSequence
,它是一个迭代器方法。在该方法中,使用 yield return
语句返回一个整数序列。Main
方法中创建了一个 sequence
变量,并将 GenerateSequence
方法的返回值赋给它。然后,使用 foreach
循环遍历 sequence
,并将序列中的每个元素打印到控制台。
当执行程序时,输出结果将是:
1
2
3
4
5
可以看到,通过使用 yield return
语句,我们可以像编写常规的循环一样定义序列的元素,而不需要显式创建集合或数组。yield
关键字使得迭代器方法的实现更加简洁和可读,同时还提供了惰性计算的好处,只有在需要时才会生成和返回下一个序列元素。
除了简单的序列生成,yield
还可以与条件语句、循环等结合使用,以根据需要生成符合特定条件的序列元素。这使得在需要处理大量数据或惰性加载数据时,迭代器方法非常有用。