举例说明c# IEnumerable 接口 和 IEnumerator 接口 的差异
时间: 2024-05-23 19:11:11 浏览: 136
C# IEnumerable和IEnumerator接口浅析
C#中的IEnumerable接口和IEnumerator接口都是用于枚举(遍历)集合的。其中,IEnumerable接口提供了一个GetEnumerator方法,返回一个IEnumerator接口的实例,而IEnumerator接口则提供了MoveNext、Current和Reset三个方法。
具体来说,IEnumerable接口是用于支持集合类的迭代器,它只包含一个GetEnumerator方法,用于返回一个IEnumerator接口的实例。而IEnumerator接口则是用于访问集合内每一个元素的,它包含三个方法:
1. MoveNext方法:将枚举器推进到集合的下一个元素,如果已经越过集合的末尾,则返回false。
2. Current方法:获取集合中当前位置的元素。
3. Reset方法:将枚举器重置到其初始位置,在调用第一个元素之前必须调用该方法。
因此,可以看出IEnumerable接口和IEnumerator接口的差异在于:
1. IEnumerable接口是用于支持集合类的迭代器,而IEnumerator接口则是用于访问集合内每一个元素的。
2. IEnumerable接口中只有GetEnumerator方法,而IEnumerator接口中则包含MoveNext、Current和Reset三个方法,用于操作集合内的元素。
3. 在使用foreach语句遍历集合时,实际上是调用了集合的GetEnumerator方法获取一个IEnumerator接口的实例,然后通过调用MoveNext和Current方法来访问集合内的元素。
阅读全文