>백엔드 개발 >C++ >C# `yield` 키워드는 명령형 반복을 어떻게 단순화합니까?

C# `yield` 키워드는 명령형 반복을 어떻게 단순화합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-27 17:31:10312검색

How Does the C# `yield` Keyword Simplify Imperative Iteration?

효율적인 반복을 위한 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:

  • 단순화된 반복: IEnumerableIEnumerator의 수동 구현을 방지하여 더 깔끔하고 간결한 코드를 생성합니다.
  • 메모리 효율성: 값은 요청 시 생성되어 메모리 사용량을 최소화하며 특히 대규모 데이터 세트를 처리할 때 유용합니다.
  • 가독성 향상: 특히 반복 프로세스와 데이터 스트리밍을 처리할 때 코드의 의도가 더욱 명확해졌습니다. 시퀀스를 생성하는 로직은 메소드 내에 직접 내장되어 있습니다.

위 내용은 C# `yield` 키워드는 명령형 반복을 어떻게 단순화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.