Además de las respuestas anteriores, C # 7 trae tuplas de tipo de valor, a diferencia de System.Tuple
que es un tipo de referencia y también ofrece una semántica mejorada.
Aún puede dejarlos sin nombre y usar la .Item*
sintaxis:
(string, string, int) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.Item1;
person.Item2;
person.Item3;
Pero lo realmente poderoso de esta nueva característica es la capacidad de tener tuplas con nombre. Entonces podríamos reescribir lo anterior así:
(string FirstName, string LastName, int Age) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.FirstName;
person.LastName;
person.Age;
También se admite la desestructuración:
(string firstName, string lastName, int age) = getPerson()