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