반응형

yield는 반복기 함수(iterator method)에서 컬렉션 데이터를 하나씩 리턴하게 할 때 사용하게 됩니다.


yield에는 두 가지 형태의 yield문을 가지고 있습니다.
yield return <수식(expression)>;
yield break;

yield return을 사용하면 호출할 때마다 순차적으로 따로 반환할 수 있습니다.
yield break을 사용하면 바로 반복기를 종료할 수 있게 됩니다.


반복기 함수는 다음과 같은 형식을 가져야합니다.
- 반환 형식은 IEnumerable, IEnumerable, IEnumerator, 또는 IEnumerator여야 합니다.
- 선언에 ref 또는 out 매개 변수가 허용되지 않습니다.


기본 형식

IEnumerable<변수형> elements = MyIteratorMethod();   
foreach (변수형 element in elements)   
{   
    실행문
}   

예제
static void Main(string[] args)
{
foreach (int nNum in funsion())
    Console.WriteLine(nNum);
}

public static IEnumerable funsion()
{
yield return 1;
yield return 2;
yield return 3;
yield return 4;
}
이렇게 구현하면 순차적으로 값을 리턴합니다.
출력 값
1
2
3
4



static void Main(string[] args)
{
foreach (int nNum in multiplication(2))
    Console.WriteLine(nNum);
}

public static IEnumerable multiplication(int nNum)
{
for ( int i = 1; i <= 9; i++ )
yield return nNum * i;
}
반복기 함수에서 for문을 이용해서 리턴할 수 있습니다.
출력 값
2
4
6
8
10
12
14
16
18


static void Main(string[] args)
{
foreach (int nNum in multiplication(2))
Console.WriteLine(nNum);
}

public static IEnumerable multiplication(int nNum)
{
for (int i = 1; i <= 9; i++)
{
if (i == 5) yield break;
yield return nNum * i;
}
}

중간에 yield break를 만나면 종료됩니다.
출력 값
2
4
6
8

반응형

'개발공부 > C#' 카테고리의 다른 글

[C#] delegate  (0) 2019.10.16
[C#] Event  (0) 2019.10.15
[C#] 반복문  (0) 2019.10.13
[C#] 조건문  (0) 2019.10.12
[C#] 연산자  (0) 2019.10.10

+ Recent posts