gpt4 book ai didi

c# - 迭代器和枚举器的区别

转载 作者:行者123 更新时间:2023-12-02 05:02:38 25 4
gpt4 key购买 nike

.NET 3.5 工作的面试问题是“迭代器和枚举器之间有什么区别”?

这是一个核心区别,与 LINQ 等不同。

无论如何,有什么区别?我似乎无法在网上找到可靠的定义。毫无疑问,我可以找到这两个术语的含义,但得到的答案略有不同。面试的最佳答案是什么?

IMO 迭代器“迭代”集合,而枚举器提供迭代功能,但必须调用它。

此外,据说使用yield关键字可以保存状态。这个状态到底是什么?有发生这种好处的例子吗?

最佳答案

迭代意味着重复某些步骤,而枚举意味着遍历值集合中的所有值。因此枚举通常需要某种形式的迭代。

这样,枚举是迭代的一种特殊情况,其中步骤是从集合中获取值。

请注意“通常”——枚举也可以递归地执行,但递归和迭代密切相关,我不会关心这个微小的差异。

您还可以枚举未显式存储在集合中的值。例如,您可以枚举自然数、素数等,但您将在枚举期间计算这些值,而不是从物理集合中检索它们。您可以将这种情况理解为枚举一个虚拟集合,其值由某种逻辑定义。

<小时/>

我认为里德·科普西(Reed Copsey)明白了这一点。在 C# 中,有两种主要的方法来枚举某些内容。

  1. 实现 Enumerable 和实现 IEnumerator 的类
  2. 使用 yield 语句实现迭代器

第一种方式较难实现,使用对象进行枚举。第二种方法更容易实现并使用延续。

关于c# - 迭代器和枚举器的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18614489/

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