Feb
22

Operador Yield do C#

Publicado às: 10: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:

   1: public IEnumerable PegarPares(int[] numeros)
   2: {
   3:     List<int> pares = new List<int>();
   4:     foreach (int n in numeros)
   5:     {
   6:         if (n % 2 == 0)
   7:             pares.Add(n);
   8:     }
   9:     return pares;
  10: }

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:

   1: public IEnumerable PegarPares(int[] numeros)
   2: {
   3:     foreach (int n in numeros)
   4:     {
   5:         if (n % 2 == 0)
   6:             yield return n;
   7:     }
   8: }

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 2.0 by 1 people

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

Add comment


 

  Country flag

biuquote
Loading



Search


Novidades no seu e-mail


Recent posts

Recent comments

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