En plus des réponses précédentes, C # 7 apporte des tuples de type valeur, contrairement à ce System.Tuple
qui est un type de référence et offre également une sémantique améliorée.
Vous pouvez toujours les laisser sans nom et utiliser la .Item*
syntaxe:
(string, string, int) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.Item1;
person.Item2;
person.Item3;
Mais ce qui est vraiment puissant dans cette nouvelle fonctionnalité, c'est la possibilité d'avoir des tuples nommés. Nous pourrions donc réécrire ce qui précède comme ceci:
(string FirstName, string LastName, int Age) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.FirstName;
person.LastName;
person.Age;
La destruction est également prise en charge:
(string firstName, string lastName, int age) = getPerson()