在C#

时间:2019-02-12 23:16:20

标签: c#

我有以下代码:

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?

1 个答案:

答案 0 :(得分:0)

yield用于惰性求值-仅在枚举中执行。方法YieldReturn()将被调用一次,然后由foreach循环枚举,并按产生它们的顺序提供值。

请注意,此示例从yield得不到任何好处-当您可以将昂贵的操作推迟到最终枚举时,它会发挥最佳作用。立即枚举该方法调用对您没有任何帮助。