프로그래밍/C#

IEnumerator 와 IEnumerable의 차이점

MAKGA 2022. 1. 18. 23:22
320x100

C#을 배워가며 정리하는 것이므로 틀린 내용이 존재할 수 있다.

 

IEnumerable은 IEnumerator를 반환하는 것이고, IEnumerator는 요소 반복을 위한 실제적인 함수의 인터페이스를 제공한다.

 

IEnumerable

public interface IEnumerable
{
    IEnumerator GetEnumerator();
}
class Program
{
    static IEnumerable<int> GetNumber()
    {
        yield return 10;
        yield return 20;
        yield return 30;
    }

    static void Main(string[] args)
    {
        foreach (int num in GetNumber())
        {
            Console.WriteLine(num);
        }             
    }
}

 

IEnumerator

public interface IEnumerator
{
    bool MoveNext ();
    object Current { get;}
    void Reset ();
}

 

public class MyList
{
    private int[] data = { 1, 2, 3, 4, 5 };
    
    public IEnumerator GetEnumerator()
    {
        int i = 0;
        while (i < data.Length)
        {
            yield return data[i];
            i++;                
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        var list = new MyList();
        ////////////////////////////////////
        foreach (var item in list)  
        {
            Console.WriteLine(item);
        }
        ////////////////////////////////////
        IEnumerator it = list.GetEnumerator();
        it.MoveNext();
        Console.WriteLine(it.Current);
        it.MoveNext();
        Console.WriteLine(it.Current);
    }
}

 

 

IEnumerable을 구현하는 개체를 사용하면 다른 사람이 각 항목을 열거자로 열거 할 수 있습니다.

IEnumerator를 구현하는 객체는 반복을 수행하는 것입니다. 열거 가능한 객체를 반복합니다.

라고 하는데, C++대비 C#  컴파일러가 자동으로 해주는게 많아 뭐가 뭔지 모르겠다..


 

320x100

'프로그래밍 > C#' 카테고리의 다른 글

C# & Unity 면접용 질문?  (1) 2022.10.03
프로세스 감시 및 관리  (0) 2022.02.19