IEnumerable 与 IEnumerator:区别与比较

IEnumerable 和 IEnumerator 都是 C# 中可用的接口。 前者是一个模块,而后者是一个对象。 

IEnumerable 生成 IEnumerator。 这里GetEnumerator用于获取IEnumerator,for循环用于生成使用Enumerator的代码。 枚举器与 IEnumerator 不同,因为 IEnumerator 是一个接口。 枚举器实现了它。

关键精华

  1. IEnumerable 是一个可以迭代对象集合的接口,而 IEnumerator 是一个实现 IEnumerator 接口并提供遍历集合的方法的类。
  2. IEnumerable 提供了一个返回 IEnumerator 对象的方法 (GetEnumerator),而 IEnumerator 提供了在集合中移动 (MoveNext) 和检索当前对象 (Current) 的方法。
  3. IEnumerable 用于创建可以迭代的集合,而 IEnumerator 用于遍历这些集合。

IEnumerable 与 IEnumerator

IEnumerable 和 IEnumerator 之间的区别是 IEnumerable 适用于泛型接口,而 IEnumerator 适用于所有非泛型接口。 IEnumerable指向一个可枚举的对象,而IEnumerator是使用每条语句进行迭代来实现的。 IEnumerable 接口使用 IEnumerator 来迭代每个语句所用的所有元素。

IEnumerable 与 IEnumerator

IEnumerable 用于查找用作接口的对象。 它用于集合中所有元素的迭代。

迭代过程使得在集合中遍历变得更容易。 它充当一个对象。 GetEnumerator 是用于实现 IEnumerator 接口的方法。

IEnumerator 有两个方法,Reset() 和 MoveNext(),并且有一个称为 Current 的扩展属性。 MoveNext() 是一种生成布尔值的方法,该值指出列表的末尾元素。 reset 方法使枚举数成为默认位置。

对比表

比较参数可枚举枚举器
接口类型通用非通用
方法数一个
退货政策枚举器不包含
光标状态无法保留可以保留
产品枚举对象对于每个语句结果
写作方式抽象混凝土

什么是 IEnumerable?

这是一个由可枚举类实现的接口。 整个集合在 c# 可以实现 IEnumerable 接口。 它返回 IEnumerator。 它不会根据代码中使用的访问说明符而更改。

另请参阅:  Spotify vs Tidal:差异与比较

IEnumerable 有一个称为 GetEnumerator 的方法。 此实现仅在类内部完成。

迭代过程使得在集合中遍历变得更容易。 它充当一个对象。 GetEnumerator 是用于实现 IEnumerator 接口的方法。

IEnumerable 被称为通用接口,因为它只需要一次性实现,因此代码编写得非常小。它不是 问题 代码实现中使用了多少个构造函数来迭代所有元素。

代码的维护成本低,因为代码的修改是在一个平台下进行的,不需要任何额外的修改。 它用 抽象化 用于数组中所有元素的迭代。

它使用 IEnumerator 迭代器来迭代所有元素。 由于它是一个泛型类,因此它可以轻松地对数组中的元素进行迭代。 它提供了一个通用的接口。 它用于所有非泛型类。

什么是 IEnumerator?

它有两种方法来实现集合中所有元素的迭代。 它有两个方法,分别是 MoveNext 和 Reset。 MoveNext 是一种方法,它指出迭代还没有到达集合的最后一个元素。

 reset 方法的作用和它听起来的一样。 它指出在上一次迭代完成后再次开始迭代,直到数组的最后一个元素。

最后,一个对象是 Current,它给出当前元素作为迭代的结果。 它对其元素有一些特定的访问权限。 它只提供对其所有数组的只读访问。

另请参阅:  Teamviewer 与 VNC:差异与比较

IEnumerator 调用 current 属性,该属性负责返回当前使用的列表中的元素。 它使用两个方法和属性来迭代对象。

每个语句都使用数组列表,通过向前移动开始迭代,并使用其中一种方法。 IEnumerator 无法返回 IEnumerable。

它可以很容易地取回光标的当前状态。 IEnumerator 使用具体的写法。 它在 通过迭代堆栈的第一个元素并以堆栈的最后一个元素结束。

IEnumerable 和 IEnumerator 之间的主要区别

  1. IEnumerable 用于通用接口,而 IEnumerator 用于非通用接口。
  2. IEnumerable 只有一种方法,而 IEnumerator 只有两种方法。
  3. IEnumerable 可以返回 IEnumerator,但 IEnumerator 不能返回 IEnumerable。
  4. IEnumerable 无法保留游标的当前状态,但 IEnumerator 可以保留它。
  5. IEnumerable 显示一个枚举对象,而 IEnumerator 为每个语句都有一个枚举对象。
  6. IEnumerable是抽象的写法,而IEnumerator则采用具体的写法。
参考资料
  1. https://ieeexplore.ieee.org/abstract/document/7883396/

最后更新时间:25 年 2023 月 XNUMX 日

点1
一个请求?

我付出了很多努力来写这篇博文,为您提供价值。 如果您考虑在社交媒体上或与您的朋友/家人分享,这对我很有帮助。 分享是♥️

关于“IEnumerable 与 IEnumerator:差异与比较”的 22 个思考

  1. 这篇文章是了解 IEnumerable 和 IEnumerator 之间差异的宝贵资源。细分是彻底且富有洞察力的,使您更容易理解两个界面的功能。

    回复
  2. 这篇文章对 IEnumerable 和 IEnumerator 进行了非常彻底和富有洞察力的比较。对于想要了解两个接口之间差异的开发人员来说,这是一个很好的参考。

    回复
  3. 这是一篇关于 IEnumerable 和 IEnumerator 的内容非常丰富的文章。通过比较表可以轻松了解两个界面之间的主要差异。

    回复

发表评论

想保存这篇文章以备后用? 点击右下角的心形收藏到你自己的文章箱!