Dodając do poprzednich odpowiedzi, C # 7 wprowadza krotki typów wartości, w przeciwieństwie do System.Tuple
tego typu referencyjnego, a także oferuje ulepszoną semantykę.
Nadal możesz pozostawić je bez nazw i użyć .Item*
składni:
(string, string, int) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.Item1;
person.Item2;
person.Item3;
Ale to, co jest naprawdę potężne w tej nowej funkcji, to możliwość nazwania krotek. Moglibyśmy więc przepisać powyższe w ten sposób:
(string FirstName, string LastName, int Age) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.FirstName;
person.LastName;
person.Age;
Obsługiwana jest również destrukcja:
(string firstName, string lastName, int age) = getPerson()