yield return Versus temporary list

Nel leggere del codice vi sara’ sicuramente capitato di leggere all’interno di metodi le parole yield return e magari ti stai chiedendo a cosa serve. Utilizzare yield return permette di restituire al termine del metodo una collection contenente tutti gli elementi inseriti. In questo brevissimo howto vedremo come restituire una collection IEnumerable di Guid.

Temporary List

Ecco come generare un numero N di Guid utilizzando una lista temporanea

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 public IEnumerable<Guid> GenerateGuidTemporaryList(int howMany)
  {
      List<Guid> guids = new List<Guid>();

      for (int i = 0; i < howMany; i++)
      {
          guids.Add(
              Guid.NewGuid()
          );
      }

      return guids;
  }

Nulla di nuovo, vero?

IEnumerable - yield return

Ora vi propongo lo stesso esempio di codice, ma sfruttando yield return invece della lista temporanea.

1
2
3
4
5
6
7
public IEnumerable<Guid> GenerateGuidYield(int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        yield return Guid.NewGuid();
    }
}

Stesso risultato, meno righe di codice e meno oggetti dichiarati. Cosa chiedere di meglio?