효율적인 반복을 위한 C#의 yield
키워드 이해
C# 2.0에 도입된 yield
키워드는 명령형 반복을 대폭 간소화합니다. IEnumerable<T>
:
<code class="language-csharp">IEnumerable<object> FilteredList() { foreach(object item in FullList) { if(IsItemInPartialList(item)) yield return item; } }</code>
이 함수는 메모리에 전체 목록을 작성하지 않습니다. 대신 반복자를 반환합니다. 호출 코드의 foreach
루프가 다음 항목을 요청할 때마다 FilteredList()
함수는 중단된 부분부터 실행을 재개하여 다음 item
을 평가하고 조건이 충족되는 경우에만 반환합니다.
더 간단한 예를 살펴보겠습니다.
<code class="language-csharp">public void Consumer() { foreach(int i in Integers()) { Console.WriteLine(i); } } public IEnumerable<int> Integers() { yield return 1; yield return 2; yield return 4; yield return 8; yield return 16; yield return 16777216; }</code>
이 코드를 디버깅하면 Integers()
이 한 번에 완전히 실행되지 않는다는 것을 알 수 있습니다. yield return
에 도달할 때까지만 실행되어 단일 값을 반환합니다. foreach
에서 Consumer()
루프를 다음 번 반복하면 Integers()
이 재개되어 다음 yield return
에서 계속됩니다.
사용 시 주요 이점 yield
:
IEnumerable
및 IEnumerator
의 수동 구현을 방지하여 더 깔끔하고 간결한 코드를 생성합니다.위 내용은 C# `yield` 키워드는 명령형 반복을 어떻게 단순화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!