Utilizzo delle variabili discard in C#

A partire dalla versione 7.0, C# supporta il concetto delle variabili discard o di scarto, per mezzo delle quali è possibile evitare l’uso di variabili temporanee in diversi ambiti, risparmiandone quindi la dichiarazione e soprattutto l’allocazione in memoria.

Per utilizzare una variabile discard, basta usare il simbolo _ al posto di una variabile normale.

Un possibile scenario di utilizzo è quello dei metodi con parametri out, per i quali è possibile dichiarare inline le variabili che memorizzeranno i valori di uscita del metodo stesso.

Per esempio, il seguente codice verifica se una stringa str è convertibile in intero, ed, in caso affermativo, valorizza la variabile num con il valore convertito, anche se poi essa non verrà utilizzata.

if(int.TryParse(str, out int num))
{
   Console.WriteLine($"{str} è un numero intero");
}

Con le variabili discard si può evitare la dichiarazione e allocazione della variabile num:

if(int.TryParse(str, out _))
{
   Console.WriteLine($"{str} è un numero intero");
}

Altri ambiti di utilizzo che permettono di assegnare a variabili discard anzichè a variabili poi da ignorare sono la decostruzione di tuple e oggetti, e il pattern matching con le istruzioni is e switch.

Ecco il primo caso. Supponiamo che il metodo GetCoordinate restituisca una tupla composta da tre elementi, di cui ci interessa memorizzare solo il terzo, che magari rappresenta il nome di una località:

(_ , _ , city) = GetCoordinate("indirizzo");

i primi due elementi sono così scartati per mezzo di due variabili discard e non è necessario dichiarare e assegnare variabili temporanee.

Ulteriori dettagli al seguente url:
https://docs.microsoft.com/it-it/dotnet/csharp/discards

Lascia un commento