[c#] C# 이터레이터와 비동기 스트림

C# 언어는 이터레이터와 비동기 스트림을 활용하여 데이터 시퀀스를 간편하게 처리할 수 있는 기능을 제공합니다. 이터레이터는 컬렉션 내의 요소를 순회하고 반환하는 데 사용되는 도구이며, 비동기 스트림은 비동기적으로 데이터를 생성하는 기능을 제공합니다.

이터레이터

이터레이터는 yield 키워드를 사용하여 구현됩니다. yield 키워드를 사용하면 호출자에게 데이터를 반환하고, 현재 상태를 유지한 채로 다음 호출을 기다릴 수 있습니다.

다음은 간단한 이터레이터 함수의 예제 코드입니다.

public IEnumerable<int> GetNumbers()
{
    yield return 1;
    yield return 2;
    yield return 3;
}

위의 코드는 GetNumbers 메서드가 이터레이터로 동작하도록 만들어주는 yield 키워드를 사용합니다.

비동기 스트림

C# 8.0부터 비동기 스트림을 지원합니다. 비동기 스트림을 활용하면 await foreach 구문을 사용하여 비동기적으로 데이터를 처리할 수 있습니다.

다음은 비동기 스트림을 사용하는 예제 코드입니다.

public async IAsyncEnumerable<int> GetNumbersAsync()
{
    await Task.Delay(1000); // 비동기 작업
    yield return 1;
    await Task.Delay(1000); // 비동기 작업
    yield return 2;
    await Task.Delay(1000); // 비동기 작업
    yield return 3;
}

위의 코드는 GetNumbersAsync 메서드가 비동기 스트림으로 동작하도록 만들어주는 IAsyncEnumerable 인터페이스와 yield 키워드를 사용합니다.

이처럼 C#의 이터레이터와 비동기 스트림은 데이터 시퀀스를 처리할 때 효율적이고 간편한 방법을 제공합니다.


참고 문헌: