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 키워드는 훨씬 더 효율적일 수 있는 컬렉션 항목에 대한 지연 열거를 효과적으로 생성합니다.