Sobes.tech
Junior — Middle

Qual é a diferença entre os mecanismos yield e async/await ao trabalhar com assíncronos na programação?

sobes.tech IA

Resposta da IA

yield e async/await são mecanismos diferentes para trabalhar com assíncronia e fluxos de dados:

  • yield é usado em iteradores e geradores para emitir valores passo a passo sem criar uma lista completa de imediato. Isso permite criar sequências preguiçosas.

  • async/await é uma sintaxe para simplificar o trabalho com operações assíncronas, permitindo escrever código que parece síncrono, mas é executado de forma assíncrona.

Exemplo de uso de yield em C#:

IEnumerable<int> GenerateNumbers() {
    for (int i = 0; i < 5; i++) {
        yield return i; // devolve um valor a cada iteração
    }
}

Exemplo de async/await:

async Task<string> GetDataAsync() {
    await Task.Delay(1000); // atraso assíncrono
    return "Dados";
}

Assim, yield controla a emissão sequencial de dados, enquanto async/await gerencia a execução assíncrona de operações.