Pochi sono a conoscenza di questo tipo, ma il alcuni casi, può essere molto utile utilizzare un tipo Tuple che un dizionario o una struttura.

In C# abbiamo la possibilità di avere strutture con liste, Dizionari di tipi e tipi di dati.

Un esempio di una struttura con vari elementi

public struct esempio
{
 public int ID;
 public string Nome;
 public string Congome;
}
List Alunno = new List();

Una struttura come ben sappiamo, può aiutarci ad organizzarci nel nostro progetto,

avendo una certa lista da poter manipolare ed eventualmente serializzare.

Una struttura non ha dei limiti imposti come ad esempio per un Dizionario.

Dictionary<int,string> Case = new Dictionary<int,string>();

Case.add(1,"Casa di Alberto");

Case.add(2,"Casa di Gianni");

Il dizionario ci limita nell'utilizzo di due valori <TKEY,TVALUE>

 

Un alternativa molto utile ad una struttura e ad un dizionare è il Tuple.

Il Tuple è una sorta di Struttura a Dizionario con liste.

 

Con la struttura dobbiamo stendere un pò di codice,

con il dizionario siamo limitati a 2 elementi.

Ma il Tuple in certe occasioni può fare a nostro caso. 

Un esempio di stesura del Tuple 

Prendiamo esempio dalla struttura sopra dichiarata come esempio

//ID, Nome, Cognome

 

List<int> Identificativi = new List<int>();

List<string> Nomi = new List<string>();

List<string> Cognomi = new List<string>();

 

//Inserisco Elementi

Identificativi.add(1);

Identificativi.add(2);

Identificativi.add(3);

 

Nomi.Add("Claudio");

Nomi.Add("Piero");

Nomi.Add("Giovanni");

 

Cognomi.Add("Capazzo");

Cognomi.Add("Grimaldi");

Cognomi.add("Maiello");

 

//Creo il Tuple

 

Tuple<List<int>,List<string>,List<string>> Raccolta;

Raccolta = new Tuple<List<int>,List<string>,List<string>>(Identificativi,Nomi,Cognomi);

 Il Tuple ci ricreerà una sorta di elementi con nome:

Item1, Item2,Item3.

 

Noi possiamo usare questi Elementi con il contenuto che abbiamo inserito. Nel nostro caso:

MessageBox.Show(string.format("ID:{0}, Nome:{1}, Cognome:{2}",Raccolta.Item1[0].ToString(),Raccolta.Item2[0],Raccolta.Item3[0]));

Questo sistema può farci risparmiare molto tempo nella stesura e nell'organizzazione dei dati.

L'unico piccolo inconveniente, e che dobbiamo ricordarci i vari Item a quale riferimenti o scopi sono stati assegnati.