Додаючи до попередніх відповідей, C # 7 пропонує кортежі типу значення, на відміну від того, System.Tuple
що є посилальним типом, а також пропонує покращену семантику.
Ви все ще можете залишити їх без імені та використовувати .Item*
синтаксис:
(string, string, int) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.Item1;
person.Item2;
person.Item3;
Але що насправді є потужним у цій новій функції - це здатність називати кортежі. Тож ми могли б переписати вищенаведене так:
(string FirstName, string LastName, int Age) getPerson()
{
return ("John", "Doe", 42);
}
var person = getPerson();
person.FirstName;
person.LastName;
person.Age;
Також підтримується деструктуризація:
(string firstName, string lastName, int age) = getPerson()