수색…
비고
반복기는 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