[c#] C# 이터레이터와 비동기/동기 작업

C#는 이터레이터와 비동기/동기 작업을 지원하여 유연하고 효율적으로 코드를 작성할 수 있습니다. 이 블로그에서는 C#에서 이터레이터와 비동기/동기 작업을 사용하는 방법에 대해 살펴보겠습니다.

이터레이터

이터레이터는 컬렉션의 요소를 순회하고 반환하는 메서드 또는 연산자를 나타냅니다. C#에서는 yield 키워드를 사용하여 이터레이터를 정의할 수 있습니다. 예를 들어, 다음은 1부터 10까지의 숫자를 반환하는 간단한 이터레이터 메서드입니다.

public IEnumerable<int> GetNumbers()
{
    for (int i = 1; i <= 10; i++)
    {
        yield return i;
    }
}

yield return 문은 컬렉션에서 값을 반환하고, 메서드의 현재 상태를 보존하여 다음 호출에서 이어서 실행할 수 있도록 합니다. 따라서 이터레이터를 사용하면 메모리를 효율적으로 활용할 수 있습니다.

비동기/동기 작업

C#에서는 asyncawait 키워드를 사용하여 비동기 작업을 지원합니다. 이를 통해 I/O 바운드 또는 CPU 바운드 작업을 비동기적으로 처리하여 응용 프로그램의 성능을 향상시킬 수 있습니다. 예를 들어, 다음은 비동기 메서드를 정의하고 호출하는 간단한 예시입니다.

public async Task<string> DownloadDataAsync()
{
    HttpClient client = new HttpClient();
    string result = await client.GetStringAsync("https://example.com/data");
    return result;
}

async 키워드로 메서드를 비동기로 지정하고, await 키워드를 사용하여 비동기 작업을 동기적으로 처리합니다. 이를 통해 비동기 코드를 작성하고 관리하는 것이 훨씬 쉬워집니다.

더 나아가, C# 7.0부터는 비동기 이터레이터(Asynchronous Iterator)도 지원하고 있어, IAsyncEnumerable를 통해 비동기적으로 요소를 반환할 수 있습니다.

C#에서는 이터레이터와 비동기/동기 작업을 통해 코드를 간단하고 유연하게 작성할 수 있으며, 성능을 향상시킬 수 있습니다.

이상으로 C# 이터레이터와 비동기/동기 작업에 대한 간단한 소개를 마치도록 하겠습니다.

이 게시물은 Microsoft Docs에서 참고 자료를 기반으로 작성되었습니다.