yield return을 사용하는 이터레이터 메서드란
C#에서 반복적인 데이터를 순차적으로 반환하는 메서드를 의미합니다.
이 메서드는 yield return 키워드를 사용하여 값을 하나씩 반환하고, 다음 값이 필요할 때마다 메서드의 실행을 다시 재개할 수 있습니다.
즉, 이터레이터 메서드는 한번에 모든 데이터를 반환하는 것이 아니라, 필요할 때마다 값을 하나씩 반환하는 방식으로 동작합니다.
이터레이터 메서드의 특징
**yield return**을 사용하여 데이터를 순차적으로 반환합니다.
IEnumerator 또는 **IEnumerable**를 반환하는 메서드입니다.
각 yield return 이후 메서드는 현재 상태를 기억하고 있다가, 다음 호출 시 이전 상태에서 이어서 실행됩니다.
이터레이터 메서드의 동작 과정
처음 호출되면 yield return을 만나기 전까지 실행됩니다.
yield return을 만나면 호출자에게 값을 반환하고 메서드는 멈춥니다.
호출자가 이터레이터를 다시 호출하면, 이전에 멈춘 지점부터 실행을 다시 시작합니다.
메서드 내에 더 이상 yield return이 없으면 반복이 끝납니다.
public class YieldReturnExample : MonoBehaviour
{
void Start()
{
// 이터레이터 메서드를 foreach로 사용
foreach (int number in GetNumbers())
{
Debug.Log(number);
}
}
// 이터레이터 메서드: yield return을 사용하여 1에서 5까지 숫자를 반환
IEnumerable<int> GetNumbers()
{
yield return 1;
yield return 2;
yield return 3;
yield return 4;
yield return 5;
}
}
1. GetNumbers()는 이터레이터 메서드입니다. yield return을 사용하여 숫자 1부터 5까지 순차적으로 반환합니다.
2. Start() 메서드에서 foreach로 GetNumbers()를 호출하면, 첫 번째 yield return 1이 반환됩니다.
3. foreach는 yield return을 통해 반환된 값(첫 번째 값 1)을 출력하고, 그 다음 값을 얻기 위해 GetNumbers() 메서드를 다시 호출합니다.
4. 다음 호출에서 yield return 2가 반환되고, 이 과정이 반복됩니다.
5. 마지막 yield return 5가 반환된 후, 이터레이터 메서드는 끝납니다.
결론
yield return을 사용하는 이터레이터 메서드는 값을 하나씩 반환하는 메서드로, 필요할 때 데이터를 순차적으로 반환하면서 중간에 실행을 일시 중단할 수 있는 유용한 기능입니다. 이를 통해 효율적인 데이터 처리와 메모리 관리를 할 수 있습니다.
'프로그래밍 > C#' 카테고리의 다른 글
Interface (1) | 2024.10.10 |
---|---|
var 키워드 (0) | 2024.10.08 |
yield return (0) | 2024.10.04 |
배열 초기화 (0) | 2024.10.04 |
for 와 foreach 비교 (1) | 2024.10.03 |