[c#] C# 이터레이터와 데이터 스트림 처리

C#에서 이터레이터(Iterator)는 데이터 컬렉션을 반복하는 데 사용되는 강력한 도구입니다. 이터레이터를 사용하면 컬렉션 내의 각 항목을 가져오고 순회하는 작업을 보다 간편하게 처리할 수 있습니다. 데이터 스트림 처리를 위해서는 이터레이터를 이해하고 활용하는 것이 중요합니다.

이터레이터란 무엇인가?

이터레이터는 컬렉션, 목록 또는 배열과 같은 데이터 소스 내에 있는 항목을 하나씩 차례대로 처리하는 데 사용됩니다. C#에서는 IEnumerator 또는 IEnumerable 인터페이스를 구현하여 이터레이터를 만들 수 있습니다.

이터레이터의 핵심은 yield 키워드입니다. yield 키워드를 사용하면 메서드가 값을 반환한 후에도 해당 메서드의 상태를 유지하고, 메서드가 호출된 곳으로 제어를 반환합니다. 이를 통해 이터레이터는 각 데이터 항목을 생성하고 반환하는 동안 상태를 유지할 수 있습니다.

다음은 간단한 예제 코드입니다.

public class DataCollection
{
    private List<int> data = new List<int>();

    public void AddData(int value)
    {
        data.Add(value);
    }

    public IEnumerator<int> GetEnumerator()
    {
        foreach (int item in data)
        {
            yield return item;
        }
    }
}

위의 예제에서 DataCollection 클래스는 IEnumerable<int>를 구현하여 이터레이터를 생성합니다. GetEnumerator 메서드에서는 yield return을 사용하여 데이터 컬렉션 내의 각 항목을 반환합니다.

데이터 스트림 처리

이터레이터를 사용하면 데이터 스트림을 처리하는 작업을 간단하게 만들 수 있습니다. 예를 들어, 데이터 소스에서 필터링, 매핑 또는 변환 작업을 수행하여 데이터를 처리하고 반환할 수 있습니다. LINQ(Language Integrated Query)와 결합하여 강력한 데이터 처리 작업을 수행할 수 있습니다.

다음은 데이터 스트림을 필터링하는 간단한 예제 코드입니다.

DataCollection dataCollection = new DataCollection();
// 데이터 추가

var filteredData = dataCollection.Where(x => x > 10);
foreach (var item in filteredData)
{
    Console.WriteLine(item);
}

위의 예제에서 Where 메서드는 LINQ를 사용하여 데이터 컬렉션을 필터링하고 필터링된 데이터를 반환합니다.

이와 같이, 이터레이터를 통해 데이터 스트림을 처리하는 것은 코드를 간결하게 만들어줄 뿐만 아니라, 데이터 처리 작업을 보다 편리하고 직관적으로 만들어줍니다.

이와 같이 C# 이터레이터를 통해 데이터 스트림을 처리하는 방법에 대해 간략히 살펴보았습니다. 이터레이터를 활용하여 데이터 처리 작업을 더욱 간편하게 수행할 수 있습니다.

참고 자료