我有以下代码:
static IEnumerable<int> YieldReturn()
{
yield return 1;
yield return 2;
yield return 3;
}
static void Main(string[] args)
{
// Lets see how yield return works
foreach (int i in YieldReturn())
{
Console.WriteLine(i);
}
}
我有几个问题:
1- YieldReturn()被调用多少次?一到三遍?
2-如果两次调用YieldReturn(),则IEnumerable如何存储值1、2和3?
答案 0 :(得分:0)
yield
用于惰性求值-仅在枚举中执行。方法YieldReturn()
将被调用一次,然后由foreach
循环枚举,并按产生它们的顺序提供值。
请注意,此示例从yield
得不到任何好处-当您可以将昂贵的操作推迟到最终枚举时,它会发挥最佳作用。立即枚举该方法调用对您没有任何帮助。