반복자는 C#에서 컬렉션을 순회하기 위한 간결하고 깔끔한 방법을 제공합니다. 반복자는 yield return 및 yield break 키워드를 사용하여 정의되며, 이를 통해 foreach 문에서 사용할 수 있는 IEnumerable 또는 IEnumerator를 간단하게 구현할 수 있습니다.
아래는 간단한 반복자 예제입니다:
using System;
using System.Collections.Generic;
public class IteratorExample
{
public static IEnumerable<int> GetNumbersUpToTen()
{
for (int i = 1; i <= 10; i++)
{
yield return i; // 현재 숫자를 반환하고 다음 호출 때 이 지점부터 계속
}
}
public static IEnumerable<int> GetEvenNumbers(IEnumerable<int> numbers)
{
foreach (var num in numbers)
{
if (num % 2 == 0)
{
yield return num; // 짝수만 반환
}
}
}
public static void Main()
{
Console.WriteLine("All numbers up to ten:");
foreach (int number in GetNumbersUpToTen())
{
Console.WriteLine(number);
}
Console.WriteLine("\nEven numbers:");
foreach (int evenNumber in GetEvenNumbers(GetNumbersUpToTen()))
{
Console.WriteLine(evenNumber);
}
}
}
이 코드를 실행하면 다음과 같은 출력 결과를 볼 수 있습니다:
All numbers up to ten:
1
2
3
4
5
6
7
8
9
10
Even numbers:
2
4
6
8
10
이 예제에서, GetNumbersUpToTen 메서드는 1부터 10까지의 숫자를 반환하는 반복자입니다. GetEvenNumbers 메서드는 주어진 숫자 중에서 짝수만을 반환하는 반복자입니다.
yield return은 현재 값을 반환하고, 다음 호출 때 정확히 그 위치부터 실행을 계속합니다. 이를 통해 반복자는 간단하고 효율적인 방식으로 컬렉션을 순회하게 됩니다.
'워크 > C# 2.0' 카테고리의 다른 글
Covariance와 Contravariance (0) | 2023.08.25 |
---|---|
고정 크기 버퍼 (Fixed Size Buffers) (0) | 2023.08.25 |
익명 메서드 (Anonymous Methods) (0) | 2023.08.25 |
Nullable 타입 (0) | 2023.08.25 |
제네릭 (Generics) (0) | 2023.08.25 |