对IEnumerator接口感到困惑

时间:2014-06-23 15:28:44

标签: c#

我试图了解如何使用IEnumerator接口及其用途。我有一个实现IEnumerator接口的类。字符串数组被传递给构造函数方法。

问题是当我执行代码时,数组未正确列出。它应该按照"ali""veli""hatca"的顺序执行,但它会按照此顺序"veli""hatca"和{{1}在控制台中列出}。我感到很困惑。我在这做错了什么?你能帮忙吗?

-1

1 个答案:

答案 0 :(得分:5)

IEnumerator起初很难掌握,但幸运的是它是一个你几乎不用的界面。相反,您应该实现IEnumerable<T>

但是,您的混淆来自IEnumerator文档中的这一行:

  

最初,枚举数位于第一个元素之前   集合。 Reset方法也会将枚举器返回   这个职位。创建枚举器或重置方法后   在调用时,必须调用MoveNext方法将枚举数推进到   在读取值之前集合的第一个元素   当前;否则,电流未定义。

您的实现最初的位置为0,而不是-1,导致奇怪的行为。您的枚举器以第一个元素上的Current开头,而不是在它之前。