元组
数组合并了相同类型的对象,而元组合并了不同类型的对象。
Console.WriteLine(bob.Item1); //Bob
Console.WriteLine(bob.Item2); //23
var joe = bob;
joe.Item1 = "Joe";
Console.WriteLine(joe.Item1); //Joe
Console.WriteLine(joe.Item2); //23
使方法可以返回多个不同类型的值
public class Program
{
private static void Main(string[] args)
{
(string, int) person = GetPerson();
Console.WriteLine(person.Item1);
Console.WriteLine(person.Item2);
}
public static (string, int) GetPerson() => ("Bob", 23);
}
元组元素命名
当创建元组字面量时,可以为元组的元素起一些有意义的名字:
Console.WriteLine(turple.Name); //也可以使用原来的Item1
Console.WriteLine(turple.Age); //也可以使用原来的Item2
如果元组对应的元素类型相同,则元组是类型兼容的。而其元素命名可以不同:
(string Name, int Age, char Sex) bob1 = ("Bob", 23, 'M');
(string Age, int Sex, char Name) bob2 = bob1;
Console.WriteLine(bob2.Item1);//Bob
Console.WriteLine(bob2.Item2);//23
Console.WriteLine(bob2.Item3);//M
元组的解构
元组隐式支持解构模式,因此可以将一个元组解构为独立的变量。
private static void Main(string[] args)
{
var bob = ("Bob", 23);
string name=bob.Item1;
int age=bob.Item2;
//也可以写成
(string name, int age) = bob;
Console.WriteLine(name);
Console.WriteLine(age);
}
元组的比较
和匿名类型一样,ValueTuple<>类型重写了Equals方法,来恰当地支持元组间的比较:
var t1 = ("one", 1);
var t2 = ("one", 1);
Console.WriteLine(t1.Equals(t2)); //True
标签:Console,string,Item1,元组,WriteLine,系列,NET,bob
From: https://www.cnblogs.com/FaceMan/p/17094260.html