ExpertiDict

C# · Intermediário · Inglês · Técnico

yield return

/jild rɪˈtɝn/palavra-chave

Instrução que transforma um método em iterador: devolve um item por vez ao chamador e pausa a execução, retomando de onde parou na próxima iteração.

Onde usar

Aparece em geradores de sequências sob demanda, como ler um arquivo grande linha a linha. O compilador gera uma máquina de estados, e nada executa até alguém enumerar o resultado.

Em código

IEnumerable<int> Pares(int max)
{
  for (int i = 0; i <= max; i += 2)
    yield return i;
}
foreach (var n in Pares(6)) Console.Write(n);

Exemplos

I used yield return to stream the lines lazily.

Usei yield return para emitir as linhas sob demanda.

Nothing runs until someone enumerates the yield return method.

Nada roda até alguém enumerar o método com yield return.

Cuidado

Não espere que o código rode na chamada do método: validações de argumento só disparam no primeiro MoveNext, a menos que você separe o iterador em um método interno.

Sinônimos

iterador

Veja também

Todos os termos de C#