【问题标题】:How does IEnumerable returns a element/Item in the method which has Yield returnIEnumerable 如何在具有 Yield 返回的方法中返回元素/项
【发布时间】:2016-06-10 08:33:51
【问题描述】:
class Program {
    static List<int> MyList;
    static void Main(string[] args) {
        MyList = new List<int>() { 1,24,56,7};
        var sn = FilterWithYield();
    }

    static IEnumerable<int> FilterWithYield() {
        foreach (int i in MyList) {
            if (i > 3)
                yield return i;
        }
    }
}

问题:IEnumerable 是一种只读类型。所以我的问题是 IEnumerable 将如何只返回一个元素。 IEnumerable 没有要添加的方法。它是否从 IEnumerator 的属性“Current”返回。??如果是这样,我们可以说每次 yield return 返回一个元素/项目时它是 IEnumerator 的当前属性吗?

【问题讨论】:

标签: c#


【解决方案1】:

当您使用yield 关键字时,您表明该方法是一个迭代器。使用yield 定义一个迭代器,就不需要一个显式的额外类来保存枚举的状态。

当您使用 foreach 语句使用迭代器方法时,foreach 循环的每次迭代都会调用迭代器方法。在迭代器方法中到达yield return 语句时,返回表达式,并保留代码中的当前位置。下次调用迭代器函数时,将从该位置重新开始执行。

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2020-09-28
    • 2023-03-31
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2022-07-26
    相关资源
    最近更新 更多