Utilizzare yield per migliorare il codice C#

di Stefano Mostarda, in .NET Framework,

Quando abbiamo un metodo che deve tornare una lista di oggetti, la soluzione più semplice è quella di creare la lista vuota e riempirla con gli oggetti necessari per poi tornarla come nel seguente esempio.

public List<int> GetEvenNumbers(List<int> input)
{
    List<int> result = new();
    foreach (var value in input)
    {
        if (value % 2 == 0)
            result.Add(value);
    }
    return result;
}

Un'alternativa più elegante, ed efficiente, è quella di usare la parola chiave yield per tornare semplicemente un oggetto della lista. Vediamo come cambia il codice usando questa parola chiave.

public List<int> GetEvenNumbers(List<int> input)
{
    foreach (var value in input)
    {
        if (value % 2 == 0)
            yield return value;
    }
}

Il metodo è ora più compatto. Abbiamo eliminato l'uso della lista temporanea pe contenere i risultati e restituiamo direttamente un oggetto con la parola chiave yield. In questo modo il compilatore capisce che deve restituire l'oggetto al chiamante e poi continuare con il codice per restituire gli altri oggetti.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi