📅  最后修改于: 2023-12-03 14:59:40.984000             🧑  作者: Mango
C# Tuple 是一种类型,用于维护一组元素的集合。每个元素可以是不同的类型。Tuple 元素是按顺序排列的且不可变的。
要创建一个新的 Tuple,请使用 Tuple.Create()
方法。
var person = Tuple.Create("Bill", "Gates", 60);
可以使用索引访问 Tuple 中的元素。
Console.WriteLine(person.Item1); // Bill
Console.WriteLine(person.Item2); // Gates
Console.WriteLine(person.Item3); // 60
您还可以使用 ItemX
属性(其中 X是元素索引) 来访问 Tuple中元素的值。
Console.WriteLine(person.Item1); // Bill
Console.WriteLine(person.Item2); // Gates
Console.WriteLine(person.Item3); // 60
在C#7及更高版本中,您可以使用解构语法将 Tuple 元素分配给变量。
(string firstName, string lastName, int age) = person;
Console.WriteLine(firstName); // Bill
Console.WriteLine(lastName); // Gates
Console.WriteLine(age); // 60
在C#7及更高版本中,您可以使用新的 Tuple 创建方法来创建具有命名元素的 Tuple。
var person = (firstName: "Bill", lastName: "Gates", age: 60);
可以使用相应的命名属性来访问元素的值。
Console.WriteLine(person.firstName); // Bill
Console.WriteLine(person.lastName); // Gates
Console.WriteLine(person.age); // 60
您还可以使用解构语法来将 Tuple 元素分配给带有名称的变量。
(string firstName, string lastName, int age) = person;
Console.WriteLine(firstName); // Bill
Console.WriteLine(lastName); // Gates
Console.WriteLine(age); // 60
Tuple 可以包含其他 Tuple 和其他元素类型的组合。
var person = Tuple.Create("Bill", "Gates", Tuple.Create("Seattle", "WA"));
可以使用相应的索引或属性来访问嵌套 Tuple 中的值。
Console.WriteLine(person.Item1); // Bill
Console.WriteLine(person.Item2); // Gates
Console.WriteLine(person.Item3.Item1); // Seattle
Console.WriteLine(person.Item3.Item2); // WA
或者,您可以使用嵌套解构来访问值。
(string firstName, string lastName, (string city, string state) address) = person;
Console.WriteLine(firstName); // Bill
Console.WriteLine(lastName); // Gates
Console.WriteLine(address.city); // Seattle
Console.WriteLine(address.state); // WA
Tuple 可以帮助我们在使用 LINQ 时,创建和维护以前只能使用自定义类型来实现的数据结构。
例如,以下代码使用 Tuple 来访问列表中的不同数据类型。
var data = new List<Tuple<string, int, bool>>();
data.Add(Tuple.Create("Bill", 60, true));
data.Add(Tuple.Create("Steve", 56, false));
data.Add(Tuple.Create("Mark", 52, true));
var names = from d in data select d.Item1;
var ages = from d in data select d.Item2;
var isActive = from d in data select d.Item3;
foreach (var name in names)
{
Console.WriteLine(name);
}
foreach (var age in ages)
{
Console.WriteLine(age);
}
foreach (var active in isActive)
{
Console.WriteLine(active);
}
Tuple 是用于维护一组元素的集合。Tuple 元素是按顺序排列的且不可变的。C#7及更高版本中,您可以创建带有命名元素的 Tuple,并使用解构语法来访问 Tuple 中的值。Tuple 还可以嵌套,并且可以与 LINQ 一起使用来创建和维护以前只能使用自定义类型来实现的数据结构。