📜  将 getenumerator 添加到类 c# (1)

📅  最后修改于: 2023-12-03 15:09:31.367000             🧑  作者: Mango

在 C# 类中添加 GetEnumerator()

在 C# 中,GetEnumerator() 是一个方法,用于实现 IEnumerable 接口。通过实现 GetEnumerator() 方法,你的类就可以被视为可以遍历的集合类型,例如 ListDictionary 等。

实现步骤

以下是将 GetEnumerator() 方法添加到一个类中的步骤:

  1. 在你的类中,实现 IEnumerable 接口。这可以通过在类声明前添加 using System.Collections;,并在类声明中添加 : IEnumerable 来完成。
using System.Collections;

public class MyCollection : IEnumerable
{
    // ...
}
  1. 为该类实现 GetEnumerator() 方法。该方法必须返回 IEnumerator 接口的实例、对象或类本身。
public class MyCollection : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        // ...
    }
}
  1. 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 接口的对象,你可以使自己的类变为可以遍历的集合类型。同时,使用迭代器模式可以提高代码的可读性和可维护性。