📅  最后修改于: 2023-12-03 15:09:31.367000             🧑  作者: Mango
在 C# 中,GetEnumerator()
是一个方法,用于实现 IEnumerable
接口。通过实现 GetEnumerator()
方法,你的类就可以被视为可以遍历的集合类型,例如 List
,Dictionary
等。
以下是将 GetEnumerator()
方法添加到一个类中的步骤:
IEnumerable
接口。这可以通过在类声明前添加 using System.Collections;
,并在类声明中添加 : IEnumerable
来完成。using System.Collections;
public class MyCollection : IEnumerable
{
// ...
}
GetEnumerator()
方法。该方法必须返回 IEnumerator
接口的实例、对象或类本身。public class MyCollection : IEnumerable
{
public IEnumerator GetEnumerator()
{
// ...
}
}
GetEnumerator()
方法主体中的代码应返回一个实现了 IEnumerator
接口的对象。你可以用以下方法来创建一个实现了 IEnumerator
接口的对象:public class MyCollection : IEnumerable
{
private object[] _items;
public MyCollection()
{
_items = new object[] { "Hello", "World", "!" };
}
public IEnumerator GetEnumerator()
{
return new MyCollectionEnumerator(_items);
}
private class MyCollectionEnumerator : IEnumerator
{
private int _position = -1;
private object[] _items;
public MyCollectionEnumerator(object[] items)
{
_items = items;
}
public object Current
{
get { return _items[_position]; }
}
public bool MoveNext()
{
_position++;
return _position < _items.Length;
}
public void Reset()
{
_position = -1;
}
}
}
这个例子中,我们使用一个内部类 MyCollectionEnumerator
来实现 IEnumerator
接口,然后在 GetEnumerator()
方法中返回它的实例。
通过实现 GetEnumerator()
方法并返回实现了 IEnumerator
接口的对象,你可以使自己的类变为可以遍历的集合类型。同时,使用迭代器模式可以提高代码的可读性和可维护性。