Olá, amigos! Hoje falarei sobre uma funcionalidade interessante do C#.
Existem algumas funcionalidades simples que poupam um trabalhão mas nem sempre são usadas. Como uma dessas funcionalidades, podemos considerar o iterador "yield".
Esta funcionalidade está disponível desde a versão 2.0 do C# mas acaba passando despercebida pela maioria dos desenvolvedores.
Basicamente, o operador "yield" é usado para iterar através de objetos retornados por um método. Ele cria um mecanismo de estado via IL para que seja possível criar métodos que conservem o seu estado sem ser necessário manter o estado via código.
Como exemplo simples, vamos usar um exemplo simples que retorna os itens pares em uma coleção:
public IEnumerable RetornaPares(int[] numeros)
{
List<int> pares = new List<int>();
foreach (int n in numeros)
{
if (n % 2 == 0)
pares.Add(n);
}
return pares;
}
Normalmente usamos um list para armazenar os itens a serem retornados.
Usando yield return ficaria assim:
public IEnumerable PegarPares(int[] numeros)
{
foreach (int n in numeros)
{
if (n % 2 == 0)
yield return n;
}
}
Veja que o yield faz o trabalho para você e retorna o resultado correto, porém iterando pelos itens sem a intervenção do desenvolvedor, não sendo necessário criar nenhuma lista para o armazenamento.
Até a próxima!
Referências:
http://www.c-sharpcorner.com/UploadFile/rmcochran/yieldreturn04022006113850AM/yieldreturn.aspx
http://www.magodigital.info/post/Operador-Yield-do-C.aspx