c#中举一个实现枚举器的实例
时间: 2024-02-27 12:54:32 浏览: 60
下面是一个实现枚举器的示例代码,它可以遍历一个自定义的 MyCollection 类型的对象:
```csharp
using System;
using System.Collections;
public class MyCollection : IEnumerable
{
private int[] items = { 1, 2, 3, 4, 5 };
public IEnumerator GetEnumerator()
{
return new MyEnumerator(items);
}
private class MyEnumerator : IEnumerator
{
private int[] items;
private int position = -1;
public MyEnumerator(int[] items)
{
this.items = items;
}
public object Current
{
get { return items[position]; }
}
public bool MoveNext()
{
position++;
return (position < items.Length);
}
public void Reset()
{
position = -1;
}
}
}
public class Program
{
static void Main(string[] args)
{
MyCollection coll = new MyCollection();
foreach (int i in coll)
{
Console.Write(i + " ");
}
}
}
```
在这个示例中,我们定义了一个 MyCollection 类,它实现了 IEnumerable 接口,表示它可以被枚举。在 GetEnumerator 方法中,我们返回了一个 MyEnumerator 类型的对象,它实现了 IEnumerator 接口,表示它可以用于遍历 MyCollection 中的元素。
在 MyEnumerator 类中,我们定义了 Current、MoveNext 和 Reset 方法,这些方法分别对应了 IEnumerator 接口中的 Current、MoveNext 和 Reset 方法。在 MoveNext 方法中,我们通过 position 变量来记录当前遍历的位置,并在每次调用 MoveNext 方法时将它加一。在 Current 方法中,我们根据 position 变量来返回当前位置上的元素。
最后,在 Main 方法中,我们创建了一个 MyCollection 类型的对象 coll,并使用 foreach 循环来遍历它中的元素,这样就可以输出 1 2 3 4 5。
阅读全文