C# · Intermediário · Inglês · Técnico
yield return
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