IEnumerable 和 IEnumerator 都是 C# 中可用的接口。 前者是一个模块,而后者是一个对象。
IEnumerable 生成 IEnumerator。 这里GetEnumerator用于获取IEnumerator,for循环用于生成使用Enumerator的代码。 枚举器与 IEnumerator 不同,因为 IEnumerator 是一个接口。 枚举器实现了它。
关键精华
- IEnumerable 是一个可以迭代对象集合的接口,而 IEnumerator 是一个实现 IEnumerator 接口并提供遍历集合的方法的类。
- IEnumerable 提供了一个返回 IEnumerator 对象的方法 (GetEnumerator),而 IEnumerator 提供了在集合中移动 (MoveNext) 和检索当前对象 (Current) 的方法。
- 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。 它不会根据代码中使用的访问说明符而更改。
IEnumerable 有一个称为 GetEnumerator 的方法。 此实现仅在类内部完成。
迭代过程使得在集合中遍历变得更容易。 它充当一个对象。 GetEnumerator 是用于实现 IEnumerator 接口的方法。
IEnumerable 被称为通用接口,因为它只需要一次性实现,因此代码编写得非常小。它不是 问题 代码实现中使用了多少个构造函数来迭代所有元素。
代码的维护成本低,因为代码的修改是在一个平台下进行的,不需要任何额外的修改。 它用 抽象化 用于数组中所有元素的迭代。
它使用 IEnumerator 迭代器来迭代所有元素。 由于它是一个泛型类,因此它可以轻松地对数组中的元素进行迭代。 它提供了一个通用的接口。 它用于所有非泛型类。
什么是 IEnumerator?
它有两种方法来实现集合中所有元素的迭代。 它有两个方法,分别是 MoveNext 和 Reset。 MoveNext 是一种方法,它指出迭代还没有到达集合的最后一个元素。
reset 方法的作用和它听起来的一样。 它指出在上一次迭代完成后再次开始迭代,直到数组的最后一个元素。
最后,一个对象是 Current,它给出当前元素作为迭代的结果。 它对其元素有一些特定的访问权限。 它只提供对其所有数组的只读访问。
IEnumerator 调用 current 属性,该属性负责返回当前使用的列表中的元素。 它使用两个方法和属性来迭代对象。
每个语句都使用数组列表,通过向前移动开始迭代,并使用其中一种方法。 IEnumerator 无法返回 IEnumerable。
它可以很容易地取回光标的当前状态。 IEnumerator 使用具体的写法。 它在 堆 通过迭代堆栈的第一个元素并以堆栈的最后一个元素结束。
IEnumerable 和 IEnumerator 之间的主要区别
- IEnumerable 用于通用接口,而 IEnumerator 用于非通用接口。
- IEnumerable 只有一种方法,而 IEnumerator 只有两种方法。
- IEnumerable 可以返回 IEnumerator,但 IEnumerator 不能返回 IEnumerable。
- IEnumerable 无法保留游标的当前状态,但 IEnumerator 可以保留它。
- IEnumerable 显示一个枚举对象,而 IEnumerator 为每个语句都有一个枚举对象。
- IEnumerable是抽象的写法,而IEnumerator则采用具体的写法。
最后更新时间:25 年 2023 月 XNUMX 日
Sandeep Bhandari 拥有塔帕尔大学计算机工程学士学位(2006 年)。 他在技术领域拥有 20 年的经验。 他对各种技术领域都有浓厚的兴趣,包括数据库系统、计算机网络和编程。 你可以在他的网站上阅读更多关于他的信息 生物页面.
感谢您提供 IEnumerable 和 IEnumerator 的如此全面的比较。它清晰简洁,很容易掌握两个界面之间的差异。
我发现这篇文章非常有见地并且解释得很好。 IEnumerable 和 IEnumerator 之间的比较非常有帮助。
这篇文章是了解 IEnumerable 和 IEnumerator 之间差异的宝贵资源。细分是彻底且富有洞察力的,使您更容易理解两个界面的功能。
IEnumerable 和 IEnumerator 的比较解释得非常好,并且差异的细分非常有帮助。
这篇文章对 IEnumerable 和 IEnumerator 进行了出色的比较,使其成为开发人员的绝佳参考。
您对 C# 中 IEnumerable 和 IEnumerator 如何运行的解释非常好。很高兴看到这些界面的比较和对比。
我很欣赏 IEnumerable 和 IEnumerator 之间的详细比较,它内容丰富且写得很好。
您概述 IEnumerable 和 IEnumerator 的不同属性和方法的方式对开发人员确实很有帮助。
IEnumerable 和 IEnumerator 的详细解释非常翔实且条理清晰。对于开发人员来说,这是宝贵的资源。
感谢您提供此信息。 IEnumerable和IEnumerator的解释非常清晰,可以更容易地理解两个接口之间的差异。
这篇文章中对 IEnumerable 和 IEnumerator 的细分既详细又清晰,使其成为开发人员的绝佳资源。
我发现 IEnumerable 和 IEnumerator 之间的比较非常有帮助。它提供了对两个接口的清晰理解。
这篇文章对 IEnumerable 和 IEnumerator 进行了非常彻底和富有洞察力的比较。对于想要了解两个接口之间差异的开发人员来说,这是一个很好的参考。
比较表对于阐明 IEnumerable 和 IEnumerator 之间的差异特别有用。
IEnumerable 和 IEnumerator 的细分非常有帮助,特别是对于那些学习 C# 的人。解释清楚且信息丰富!
我同意,这消除了有关两个界面之间差异的任何混淆。
这是一篇关于 IEnumerable 和 IEnumerator 的内容非常丰富的文章。通过比较表可以轻松了解两个界面之间的主要差异。
我完全同意。该比较表对于理解 IEnumerable 和 IEnumerator 的细微差别是一个很好的参考。
感谢您详细解释 IEnumerable 和 IEnumerator 之间的差异。我很欣赏你的比较的清晰度。
确切地说,彻底的比较可以更容易地理解两个接口的功能。
IEnumerable 和 IEnumerator 的细分非常好 - 它全面涵盖了主要差异,有助于理解两个接口的功能。
我完全同意。这篇文章提供了对 IEnumerable 和 IEnumerator 的清晰理解。