我试图了解如何使用IEnumerator接口及其用途。我有一个实现IEnumerator接口的类。字符串数组被传递给构造函数方法。
问题是当我执行代码时,数组未正确列出。它应该按照"ali"
,"veli"
,"hatca"
的顺序执行,但它会按照此顺序"veli"
,"hatca"
和{{1}在控制台中列出}。我感到很困惑。我在这做错了什么?你能帮忙吗?
-1
答案 0 :(得分:5)
IEnumerator起初很难掌握,但幸运的是它是一个你几乎不用的界面。相反,您应该实现IEnumerable<T>。
但是,您的混淆来自IEnumerator文档中的这一行:
最初,枚举数位于第一个元素之前 集合。 Reset方法也会将枚举器返回 这个职位。创建枚举器或重置方法后 在调用时,必须调用MoveNext方法将枚举数推进到 在读取值之前集合的第一个元素 当前;否则,电流未定义。
您的实现最初的位置为0,而不是-1,导致奇怪的行为。您的枚举器以第一个元素上的Current开头,而不是在它之前。