본문 바로가기

C#

C# 이터레이터(IEnumerable 인터페이스와 yield 키워드)

반응형
  • foreach 문 사용할 수 있음
  • IEnumerable<T>와 yield 키워드를 사용하면 foreach 문을 인스턴스.메서드로 호출
  • IEnumerator<T>와 yield 키워드를 사용하면 foreach 문을 인스턴스로 호출
    • 클래스에서 GetEnumerator 메서드로 구현해야함(메서드 이름 같아야함)
class yieldTest
{
    public IEnumerable<int> Test01()
    {
        yield return 10;
        yield return 20;
        yield return 30;
    }

    public IEnumerator<int> GetEnumerator()
    {
        for (int i = 1; i <= 3; i++)
        {
            yield return i * 100;
        }
    }
}
static void Main(string[] args)
{
    yieldTest test = new yieldTest();
    foreach(var t in test.Test01())
    {
        Console.WriteLine($"{t}");
    }
    Console.WriteLine();

    var tt = test.Test01().GetEnumerator();
    while (tt.MoveNext())
    {
        Console.WriteLine(tt.Current);
    }
    Console.WriteLine();

    foreach (var t in test)
    {
        Console.WriteLine($"{t}");
    }
}

반응형