C# yield

A expressão yield é bastante útil quando queremos os valores de um método que retorna um IEnumerable ou IEnumerator.

Para retornarmos os valores entre o intervalo passado como parâmetro no método GetValuesFromInterval() teriamos algo assim:

static IEnumerable<int> GetValuesFromInterval(int min, int max)
{
        List<int> intervalo = new List<int>();
        for (int i = min+1; i < max; i++)
        {
                intervalo.Add(i);
        }
        return intervalo;
}

Neste exemplo, para retornarmos todos os valores precisamos de criar um List e adicionar todos os nºs do intervalo que indicamos, e por fim retornarmos o List.

Com a expressão yield deixamos de precisar de criar um List e ficamos com o código bastante mais elegante.

static IEnumerable<int> GetValuesFromInterval(int min, int max)
{
        for (int i = min + 1; i < max; i++)
        {
                yield return i;
        }
}