Discards: Addio variabili dummy, fake, temp …

Il concetto delle variabili discards è stato introdotto con la versione 7.0 di C#. Di cosa si tratta? Una variabile di tipo discard è una variabile che non serve nel nostro codice e la vogliamo buttare via. Quante volte avete riempito il vostro codice in passato di variabili come:

  • var pippo

  • var fake

  • var dummy

  • var temp

o simili? Io parecchie volte, ma ora il problema è risolto! Vi anticipo, questo HowTo sarà molto breve con pochissimi esempi rispetto alle potenzialità offerte. Sappiate che se usate bene il vostro codice sarà molto più leggibile e pulito.

Discards: come utilizzarle?

Per utilizzare una variabile discard bisogna dichiararla senza dichiararla! Si, avete letto benissimo e per farlo basta semplicemente mettere il simbolo “_” (senza le virgolette) ed il gioco è fatto. Vediamo subito un esempio (il primo caso nelle quali le ho utilizzate di recente) per rendere il tutto più semplice. Discard Mode OFF

1
2
3
4

int fakeValue;
bool tryParseCheck = int.TryParse("1", out fakeValue);

Discard Mode ON

1
2
3
4

bool tryParseCheckWithDiscard = int.TryParse("12", out _);
_ = int.TryParse("1", out fakeValue);

Ora, come potete vedere nelle due righe della modalità “Discard Mode ON” è stato semplice capire due cose:

  • E’ un valore intero? Si? No? Però il valore in out non mi serve …

  • Sono certo che sia int, quindi il valore bool è del tutto inutile. Mi prendo direttamente il valore prodotto in out

Discards & Tuple

L’uso delle variabili discards non si limita semplicemente a quanto appena visto. Possiamo usarlo anche in altri contesti come ad esempio le tuple. L’utilizzo è semplice e praticamente identico come concetto. Ora vi mostrerò come utilizzarlo in pratica. Per farlo ho scritto una function che data in ingresso un DateTime e torna (in una tupla) i sei elementi chiave: Year, Month, Day, Hour, Minute, Second. Di questi elementi a me (nell’esempio) interessa solamente il Month. Quindi -la vera domanda è- perchè dichiarare tutte le altre cinque variabili? Function & Tuple

1
2
3
4
5
6

private static (int, int, int, int, int, int) SplitDateAndTime(DateTime dateTime)
{
	return (dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second);
}

Discard & Tuple

1
2
3
4

    int month = 0;
    (_, month, _, _,  _, _) = SplitDateAndTime(DateTime.Now);

Come potete vedere l’utilizzo (se fatto bene) consente di potere riciclare molto il codice senza dovere necessariamente dichiarare un sacco di variabili da “ignorare” subito dopo.

Variabili discard - Guida di C#