Yield 키워드는 컬렉션에 대해 사용자 지정 상태 저장 반복을 수행하는 데 도움이 됩니다. yield 키워드를 사용하면 컨트롤이 호출자 함수에서 소스로 또는 그 반대로 이동한다는 의미입니다.
예시
using System;
using System.Collections.Generic;
namespace DemoApplication {
class Program {
static List<int> numbersList = new List<int> {
1, 2, 3, 4, 5
};
public static void Main() {
foreach(int i in RunningTotal()) {
Console.WriteLine(i);
}
Console.ReadLine();
}
public static IEnumerable<int> RunningTotal() {
int runningTotal = 0;
foreach(int i in numbersList) {
runningTotal += i;
yield return (runningTotal);
}
}
}
} 출력
위 프로그램의 출력은
1 3 6 10 15
위의 예에서 각각의 주요 메소드에서 우리는 누계의 숫자 목록을 반복하고 있습니다. 따라서 yield return이 호출될 때마다 컨트롤은 각 루프의 기본 메서드로 돌아가 값을 인쇄합니다. 값을 인쇄한 후 컨트롤은 각 누계에 대해 다시 이동합니다. 여기서 주의해야 할 점은 이전 값도 그대로 유지된다는 점입니다. 간단히 말해서 yield 키워드는 훨씬 더 효율적일 수 있는 컬렉션 항목에 대한 지연 열거를 효과적으로 생성합니다.