Posts (Shorts) C# - Foreach가 실제로 생성하는 소스코드
Post
Cancel

(Shorts) C# - Foreach가 실제로 생성하는 소스코드

Memo


Source Code

1
2
3
4
5
6
private List<int> list = new List<int>(10);

foreach (var item in list)
{
    Console.WriteLine(item);
}


Generated Code

1
2
3
4
5
6
7
8
9
private List<int> list = new List<int>(10);

List<int>.Enumerator enumerator = list.GetEnumerator();

while (enumerator.MoveNext())
{
    int item = enumerator.Current;
    Console.WriteLine(item);
}


정리

  1. .GetEnumerator()를 통해, 구현된 Enumerator를 가져온다. 타입은 구현에 따라 달라진다.
  2. while(enumerator.MoveNext())를 통해 진행 가능 여부를 가져온다.
  3. enumerator.Current 프로퍼티를 통해 현재 값을 참조한다.
This post is licensed under CC BY 4.0 by the author.