티스토리 뷰
C#에서 yield가 자주 사용되는 곳은 집합적 데이터를 가지고 있는 컬렉션 클래스이며,
일반적으로 컬렉션 클래스는 데이터 요소를 하나 하나 사용하기 위해 흔히 Enumerator(Iterator)를 구현하는 경우가 많습니다 Enumrator를 구현하는 한 방법으로 yield를 사용할 수 있습니다.
Enumerator는 데이터 요소를 하나씩 리턴하는 기능을 하는 것으로 C#.net에서는 IEnumerator라는 인터페이스를 구현해야 합니다 인터페이스는 Current(속성), MoveNext() (메서드), Reset() (메서드) 등 3개의 멤버로 이루어져 있는데, Enumerator가 되기 위해서 Current와 MoveNext()를 반드시 구현해야 합니다.
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++;
}
}
//...
}
// (1) foreach 사용하여 Iteration
var list = new MyList();
foreach (var item in list)
{
Console.WriteLine(item);
}
// (2) 수동 Iteration
IEnumerator it = list.GetEnumerator();
it.MoveNext();
Console.WriteLine(it.Current); // 1
it.MoveNext();
Console.WriteLine(it.Current); // 2
'[.Net C#] > 기초' 카테고리의 다른 글
[C#] CLR(Common Language Runtime) (0) | 2020.11.19 |
---|---|
[C#] INotifyPropertyChanged (0) | 2019.07.15 |
[C#] 초간단 Nuget(BaGet)자체 Server생성(Azure, Local server) (0) | 2019.06.20 |
[C#] 간단한 정규식 예제 (0) | 2019.05.31 |
[C#] 프로세스 아이디로 중복 실행 방지 프로그램 (0) | 2019.02.12 |
- Total
- Today
- Yesterday