gpt4 book ai didi

c# - 返回 IEnumerable 和 IEnumerator 的迭代器方法之间有什么区别吗?

转载 作者:太空狗 更新时间:2023-10-29 20:15:35 24 4
gpt4 key购买 nike

考虑两个具有相同主体的迭代器方法:

public static IEnumerable<int> It1() { 
...
}

public static IEnumerator<int> It2() {
...
}

有没有调用It2的情况不同于调用 It1.GetEnumerator()

是否有充分的理由将迭代器定义为 IEnumerator<T>IEnumerable<T> ?我唯一能想到的是当你实现 IEnumerable<T>.GetEnumerator() 时.

编辑:迭代器方法是指使用 yield return 的方法和 yield break构造。

最佳答案

如前所述,您不能 foreachIEnumerator<T> .因此,很难集成到代码中您想迭代返回的内容的地方。

此外,这里的重要性在于 IEnumerable<T>意味着是一个工厂,这样你就可以生产 IEnumerator<T> 的实现与 T 的集合的实现没有直接关系.

现在更重要的是 LINQ 的所有扩展方法都可以正常工作 IEnumerable<T> , 所以你会希望通过返回它来使你的枚举尽可能容易使用。

关于c# - 返回 IEnumerable<T> 和 IEnumerator<T> 的迭代器方法之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/416651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com