Aggiungendo alle risposte precedenti, C # 7 porta tuple di tipo valore, a differenza di System.Tuple
questo è un tipo di riferimento e offre anche una semantica migliorata.
Puoi comunque lasciarli senza nome e utilizzare la .Item*
sintassi:
(string, string, int) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.Item1;
person.Item2;
person.Item3;
Ma ciò che è veramente potente in questa nuova funzionalità è la possibilità di avere tuple con nome. Quindi potremmo riscrivere quanto sopra in questo modo:
(string FirstName, string LastName, int Age) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.FirstName;
person.LastName;
person.Age;
La destrutturazione è supportata anche:
(string firstName, string lastName, int age) = getPerson()