C# a fondo: La instrucción yield

La instrucción yield se emplea en un bloque iterador. Un bloque iterador es una sección de código que devuelve una secuencia de valores del mismo tipo.

La instrucción yield se emplea con la instrucción return para proporcionar un valor al objeto enumerador y con la instrucción break para indicar el final de la iteración.

Veamos un ejemplo sencillo que nos aclare el concepto y nos muestre las ventajas de su uso. El siguiente método devuelve la lista de números pares comprendidos entre dos números:

public static IEnumerable<int> ObtenerPares(int inicio, int fin)
{
    List<int> pares = new List<int>();

    for (int i = inicio; i <= fin; i++)
        if ((i % 2) == 0)
            pares.Add(i);

    return pares;
}

La instrucción yield nos da la oportunidad de llevar a cabo este tipo de operaciones sin tener que declarar una variable en la que ir almacenando los distintos valores antes de proceder a su devolución como resultado:

public static IEnumerable<int> ObtenerPares(int inicio, int fin)
{
    for (int i = inicio; i <= fin; i++)
        if ((i % 2) == 0)
            yield return i;
}

Referencia:

yield (Referencia de C#)

Iteradores (Guía de programación de C#)

4 comentarios en “C# a fondo: La instrucción yield”

  1. Muy interesante, pero lamentablemente no se puede colocar dentro de una seccion protegida por un try..catch, vere si por ahi encuentro alguna zona de codigo donde se pueda usar esto.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *