C# tupla in .Net 5

Articolo che fornisce al lettore l'utilizzo della tupla.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo articolo vedremo come utilizzare la parola chiave tupla nel linguaggio di programmazione C# e con la versione 5 del Framework.
La tecnica della tupla, permette di raggruppare più elementi in una struttura dati più leggera.
Vedremo alcuni esempi applicati in ambito Windows Application, ma la sintassi e tale tecnica è utilizzabile anche in ambiente web, con la tecnologia Asp.Net
Possiamo utilizzare il frammento di codice sia su un progetto web e sia su un progetto di tipo windows application o console application, l’importante e che l’output venga visualizzato per constattare il risultato atteso.

Stesura del codice

Dopo aver creato il progetto a proprio piacimento, inseriamo una label che conterrà il risultato della tupla, oppure utilizziamo altro strumento come per esempio una messagebox.

Il primo esempio di tupla riguarda la possibilità di creare due elementi, uno di tipo double e l’altro di tipo int, ed assegnargli i valori.
Qui di seguito il frammento di codice di tale dichiarazione.
 

C#
(double, int) t1 = (41.5, 3);
label1.Text = $"Valore elementi {t1.Item1} and {t1.Item2}.";

Come si vede dal frammento di codice precedente, la dichiarazione di tupla avviene tramite la dichiarazione di tipo messo tra parentesi (in questo caso due) che possono essere anche dello stesso tipo, il nome variabile e poi l’assegnazione del valore.
Per rilevare il valore, viene creato in automatico una proprietà denominata item con un valore incrementale.

Possiamo anche definire il tipo di nome da dare al tipo che stiamo creando. Il nome degli elementi va subito dopo aver definito il tipo dell’elemento.
Di seguito si riporta un esempio prendendo spunto dal precedente esempio delle suddette dichiarazioni.

C#
(double primoElemento, int SecondoElemento) t2 = (1.45, 3);
label1.Text = $"Primo Elemento {t2.primoElemento} Secondo Elemento {t2.SecondoElemento}." ;

Come si è visto dal precedente codice, dopo aver dichiarato il tipo è stato impostato il nome, in questo modo dall’oggetto di tupla possiamo digitare il nome dell’elemento per rilevare il valore.
E’ possibile creare tuple con varie elementi, per esempio due elementi di tipo string ed uno tipo int impostando per ogni elemento un nome, qui di seguito un esempio di tali dichiarazioni.

C#

label1.Text = $"Primo Elemento {t2.primoElemento} Secondo Elemento {t2.SecondoElemento}." ;
(string primaVoce, string SecondaVoce, int conteggio) tupla3 = ("Prova", "altro testo", 3);
label1.Text = tupla3.primaVoce + " seconda voce: " + tupla3.SecondaVoce + " conteggio: " + tupla3.conteggio;

La tupla si può utilizzare anche nelle funzioni che restituiscono dei valori. Per esempio, chiamando una funzione che restituisce un valore.
Qui di seguito si riporta la funzione che restituisce una tupla ed il suo utilizzo, ossia come rilevare i valori di tale funzione.

C#
public (string, string) Metodo()
{
(string Nome, string Cognome) risultatoTupla =  ("Emanuele", "Mattei");
return risultatoTupla;
}
var risultato = Metodo();
label1.Text = risultato.Item1 + " " + risultato.Item2;

Come si è visto dal precedente codice, viene creato un metodo con una tupla di due elementi di tipo string, che vengono valorizzati e restituiti.
Dopo aver invocato il metodo, viene rilevato il valore dei singoli elementi.
Ultimo esempio è quello di utilizzarlo come metodo che non restituisce valori ma che invece la tupla viene utilizzata all’interno del metodo.
Qui di seguito il frammento di codice di tale dichiarazione.

C#
public void Metodo2((string, string) Elemento)
{
MessageBox.Show(Elemento.Item1 + " " + Elemento.Item2);
}
(string, string) TuplaPerMetodo = ("Emanuele", "Mattei");
Metodo2(TuplaPerMetodo);

Alla funzione viene passata la tupla valorizzata che viene utilizzata all’interno di essa.

Conclusioni

L’articolo ha voluto fornire al lettore una panoramica sull’utilizzo della tecnica delle tupla, che è poco conosciuta e poco utilizzata ma che può tornare utile al programmatore in vari scenari.
Ogni qualvolta che c’è una nuova versione del framework o del linguaggio di programmazione, si amplia ancora di più le numerose funzionalità e le numerose classi che il Framework ad oggi offre allo sviluppatore.