Share via


yield(C# 참조)

업데이트: 2007년 11월

iterator 블록에서 열거자 개체에 값을 제공하거나 반복이 끝났음을 알리기 위해 사용됩니다. 다음과 같은 형식 중 하나를 사용합니다.

yield return <expression>;
yield break;

설명

식은 열거자 개체에 대한 값으로 계산되어 반환됩니다. expression은 반복기의 yield 형식으로 암시적으로 변환될 수 있어야 합니다.

yield 문은 iterator 블록 내에만 포함될 수 있으며 메서드, 연산자 또는 접근자의 본문으로 사용할 수 있습니다. 이러한 메서드, 연산자 또는 접근자의 본문에는 다음 제한 사항이 적용됩니다.

  • 안전하지 않은 블록은 사용할 수 없습니다.

  • 메서드, 연산자 또는 접근자에 대한 매개 변수는 ref 또는 out일 수 없습니다.

무명 메서드에는 yield 문을 사용할 수 없습니다. 자세한 내용은 무명 메서드(C# 프로그래밍 가이드)를 참조하십시오.

expression과 함께 사용할 경우, catch 블록이나 catch 절이 하나 이상 포함된 try 블록에는 yield return 문을 포함할 수 없습니다. 자세한 내용은 예외 처리문(C# 참조)을 참조하십시오.

예제

다음 예제에서 yield 문은 반복기 블록인 Power(int number, int power) 메서드 내에서 사용됩니다. Power 메서드가 호출되면 숫자의 거듭제곱이 들어 있는 열거 가능한 개체가 반환됩니다. Power 메서드의 반환 형식은 반복기 인터페이스 형식인 IEnumerable입니다.

public class List
{
    //using System.Collections;
    public static IEnumerable Power(int number, int exponent)
    {
        int counter = 0;
        int result = 1;
        while (counter++ < exponent)
        {
            result = result * number;
            yield return result;
        }
    }

    static void Main()
    {
        // Display powers of 2 up to the exponent 8:
        foreach (int i in Power(2, 8))
        {
            Console.Write("{0} ", i);
        }
    }
}
/*
Output:
2 4 8 16 32 64 128 256 
*/

C# 언어 사양

자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.

  • 19.3 반복기

  • 22 반복기

참고 항목

개념

C# 프로그래밍 가이드

참조

foreach, in(C# 참조)

반복기 사용(C# 프로그래밍 가이드)

기타 리소스

C# 참조