[c#] C# 이터레이터 인터페이스

C#에서 이터레이터는 컬렉션을 반복하는 데 사용하는 편리한 방법입니다. 이터레이터를 작성하려면 IEnumerator 또는 IEnumerable 인터페이스를 구현해야 합니다.

IEnumerator 인터페이스

IEnumerator 인터페이스를 구현하면 컬렉션을 반복할 수 있는 메서드 MoveNext와 현재 요소를 가리키는 속성 Current를 제공합니다.

다음은 IEnumerator 인터페이스를 구현한 예시입니다.

public class MyCollection : IEnumerable
{
    private object[] _items;

    public MyCollection(object[] items)
    {
        _items = items;
    }

    public IEnumerator GetEnumerator()
    {
        return new MyEnumerator(_items);
    }
}

public class MyEnumerator : IEnumerator
{
    private object[] _items;
    private int _position = -1;

    public MyEnumerator(object[] items)
    {
        _items = items;
    }

    public bool MoveNext()
    {
        _position++;
        return (_position < _items.Length);
    }

    public void Reset()
    {
        _position = -1;
    }

    public object Current
    {
        get { return _items[_position]; }
    }
}

IEnumerable 인터페이스

IEnumerable 인터페이스를 구현하면 IEnumerator 인터페이스를 반환하는 GetEnumerator 메서드를 제공합니다.

다음은 IEnumerable 인터페이스를 구현한 예시입니다.

public class MyCollection : IEnumerable
{
    private object[] _items;

    public MyCollection(object[] items)
    {
        _items = items;
    }

    public IEnumerator GetEnumerator()
    {
        return new MyEnumerator(_items);
    }
}

이와 같이 C# 이터레이터 인터페이스를 활용하여 컬렉션을 효과적으로 반복하고 조작할 수 있습니다.

더 자세한 정보는 Microsoft 공식 문서를 참고하세요.

MSDN - IEnumerator Interface

MSDN - IEnumerable Interface