什么是 IEnumerable
?
这是一个由可枚举类实现的接口。 整个集合在 c# 可以实现 IEnumerable
接口。 它返回 IEnumerator
。 它不会根据代码中使用的访问说明符而更改。
IEnumerable
有一个称为 GetEnumerator 的方法。 此实现仅在类内部完成。
迭代过程使得在集合中遍历变得更容易。 它充当一个对象。 GetEnumerator 是用于实现 IEnumerator
接口的方法。
IEnumerable
通常被称为通用接口,因为代码编写得非常小,因为它只需要一次性实现。 在代码实现中使用多少构造函数来迭代所有元素并不重要。
该代码维护成本低,因为 修改 代码在一个平台下,不需要任何额外的更改。 它用 抽象化 用于数组中所有元素的迭代。
它使用一个 IEnumerator
迭代器,用于迭代所有元素。 因为它是一个泛型类,所以它很容易对数组中的元素进行迭代。 它提供了一个通用接口。 它用于所有非通用类。
什么是IEnumerator
?
它有两种方法来实现集合中所有元素的迭代。 它有两个方法,分别是 MoveNext 和 Reset。 MoveNext 是一种方法,它指出迭代还没有到达集合的最后一个元素。
Reset 方法的作用和它听起来的一样。 它指出在上一次迭代完成后再次开始迭代,直到数组的最后一个元素。
最后,一个对象是 Current,它给出当前元素作为迭代的结果。 它对其元素有一些特定的访问权限。 它只提供对其所有数组的只读访问。
IEnumerator
调用 current 属性,它负责返回列表中当前正在使用的元素。 它使用两种方法和属性来迭代对象。
每个语句使用数组列表并通过向前移动并使用其中一种方法开始迭代。 IEnumerator
无法返回 IEnumerable
。
它可以很容易地取回光标的当前状态。 IEnumerator
使用一个 具体 写作方式。 它在 堆 通过迭代堆栈的第一个元素并结束到堆栈的最后一个元素。
IEnumerator
接口为类内部的集合提供了迭代方式, IEnumerator
要求你实现三个方法:
MoveNext
方法:该方法将集合索引加1,并返回一个bool值,指示是否已到达集合的末尾。Reset
方法:它将集合索引重置为其初始值-1,这会使枚举数无效。Current
方法: 返回position
位置的当前对象
IEnumerable
和 IEnumerator
的区别
IEnumerable
是模块,而 IEnumerator
是对象
IEnumerable
是用于迭代的序列,IEnumerator
则像是序列的一个游标。多个 IEnumerator
可以遍历同一个 IEnumerable
,并且不会改变 IEnumerable
的状态,而IEnumerator
本身就是多状态的:每次调用 MoveNext(),当前游标都会向前移动一个元素。
IEnumerable
是一个可以迭代对象集合的接口,而IEnumerator
是一个实现IEnumerator
接口并提供遍历集合的方法的类。IEnumerable
提供了一个返回IEnumerator
对象的方法 (GetEnumerator
),而IEnumerator
提供了在集合中移动 (MoveNext
) 和检索当前对象 (Current
) 的方法。IEnumerable
用于创建可以迭代的集合,而IEnumerator
用于遍历这些集合。IEnumerable
用于通用接口,而IEnumerator
用于非通用接口。IEnumerable
可以返回IEnumerator
。- Enumerable 显示一个枚举对象,而
IEnumerator
具有每个语句。 IEnumerable
是一种 抽象 的写法,但是IEnumerator
使用的是 具体 写作方式。
IEnumerable
生成 IEnumerator
。 这里的 GetEnumerator
是用来获取IEnumerator
的。IEnumerator
有两个方法,Reset()
和 MoveNext()
,并且有一个称为 Current 的扩展属性。 MoveNext() 是一种生成布尔值的方法,该值指出列表的末尾元素。 Reset方法使枚举数成为默认位置。