수색…


비고

반복기는 yield 키워드를 사용하여 배열 또는 컬렉션 클래스에 대해 사용자 지정 반복을 수행하는 메서드, get 접근 자 또는 연산자입니다.

간단한 숫자 반복자 예제

이터레이터의 일반적인 유스 케이스는 숫자 컬렉션에 대해 일부 연산을 수행하는 것이다. 아래 예제는 숫자 배열 내의 각 요소를 개별적으로 콘솔에 출력하는 방법을 보여줍니다.

이는 배열에서 IEnumerable 인터페이스를 구현하므로 클라이언트가 GetEnumerator() 메서드를 사용하여 배열에 대한 반복기를 얻을 수 있으므로 가능합니다. 이 메서드는 배열의 각 숫자 위에 읽기 전용 전진 전용 커서 인 열거자를 반환합니다.

int[] numbers = { 1, 2, 3, 4, 5 };

IEnumerator iterator = numbers.GetEnumerator();

while (iterator.MoveNext())
{
    Console.WriteLine(iterator.Current);
}

산출

1
2
3
4
5

foreach 문을 사용하여 동일한 결과를 얻을 수도 있습니다.

foreach (int number in numbers)
{
    Console.WriteLine(number);
}

수율을 사용하여 반복자 만들기

반복자 열거자를 생성 합니다. C #에서, 열거는 메소드, 프로퍼티 정의 또는 포함 인덱서에 의해 생성 yield 문.

대부분의 메소드는 정상적인 return 문을 통해 호출자에게 제어를 return 합니다. 반대로, 사용 방법 yield 문은 그 값을 반환 사이에 로컬 상태를 유지하면서 그 요청의 발신자에 여러 값을 반환 할 수있다. 이러한 반환 값은 시퀀스를 구성합니다. 이터레이터에는 두 가지 유형의 yield 문이 사용됩니다.

  • yield return . 호출자에게 제어권을 반환하지만 상태를 보존합니다. 제어가 다시 전달되면이 피 호출자가이 줄에서 실행을 계속합니다.

  • yield break 는 일반적인 return 문과 유사하게 기능합니다. 이는 시퀀스의 끝을 의미합니다. 정상적인 return 문 자체는 반복자 블록 내에서 불법입니다.

아래의 예제는 피보나치 시퀀스 를 생성하는 데 사용할 수있는 반복자 메소드를 보여줍니다.

IEnumerable<int> Fibonacci(int count)
{
    int prev = 1;
    int curr = 1;
    
    for (int i = 0; i < count; i++)
    {
        yield return prev;
        int temp = prev + curr;
        prev = curr;
        curr = temp;
    }
}

그런 다음이 반복자를 사용하여 호출 메서드에서 사용할 수있는 피보나치 시퀀스의 열거자를 생성 할 수 있습니다. 아래 코드는 피보나치 시퀀스의 처음 10 개 항목을 열거 할 수있는 방법을 보여줍니다.

void Main()
{
    foreach (int term in Fibonacci(10))
    {
        Console.WriteLine(term);
    }
}

산출

1
1
2
3
5
8
13
21
34
55


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow