การเพิ่มคำตอบก่อนหน้านี้ 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()