Comentários

Comment RSS

Feb
22

Operador Yield do C#

Publicado às: 07:23 Comments (0)

O operador yield é muito pouco usado, mas apos conhecê-lo hoje e fiquei impressionado porque nunca vi nada parecido.

Ele é usado para retornar uma instancia de um IEnumerable, vou explica melhor em forma de exemplo.

Vamos supor que você queira  apenas retornar os números pares de um vetor, você faria +/- assim:

public IEnumerable PegarPares(int[] numeros)
{
    List<int> pares = new List<int>()
    foreach (int n in numeros)
    {
        if (n % 2 == 0
            pares.Add(n);
    }
    return pares;
} 

Observe que foi preciso criar um List para armazenar todos os pares encontrados no vetor e então apos o foreach retornar o  IEnumerable.

Usando o operador yield, isso poderia ser feito assim:

public IEnumerable PegarPares(int[] numeros)
{
    foreach (int n in numeros)
    {
        if (n % 2 == 0)
            yield return n;
    }
}

Veja que legal, não é preciso criar nada pra armazenar os números pares.

Mas o operador yield possui algumas restrições:

  1. Não pode ser usando em blocos inseguros (unsafe blocks)
  2. Parâmetros para o método e nem usado como ref ou out

Currently rated 3.7 by 6 people

  • Currently 3.666667/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Add comment


 

  Country flag

biuquote
  • Comment
  • Preview
Loading



Designer Original Binary Bonsai | Adaptado para MagoDigital | BlogEngine.NET