В дополнение к предыдущим ответам 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()