Somando-se às respostas anteriores, C # 7 traz tuplas de tipo de valor, ao contrário de System.Tuple
ser um tipo de referência e também oferece semântica aprimorada.
Você ainda pode deixá-los sem nome e usar a .Item*
sintaxe:
(string, string, int) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.Item1;
person.Item2;
person.Item3;
Mas o que é realmente poderoso sobre esse novo recurso é a capacidade de ter tuplas nomeadas. Portanto, poderíamos reescrever o acima assim:
(string FirstName, string LastName, int Age) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.FirstName;
person.LastName;
person.Age;
A desestruturação também é suportada:
(string firstName, string lastName, int age) = getPerson()