C#元组教程展示了如何在C#中使用元组类型。C#教程是C#语言的综合教程。
元组是一组未命名但有序的值。这些值可以是不同的类型。元组可以是引用类型(由System.Tuple
支持)或值类型(由System.ValueTuple
支持)。
从C#7开始,元组成为语言语法的一部分。在本文中,我们重点关注较新的语法。新语法使用圆括号来定义和使用元组。
C#元组简单例子
在下面的示例中,我们使用旧方法和新方法创建一个新元组。
var u1 = Tuple.Create("John", "Done", "gardener"); Console.WriteLine($"{u1.Item1} {u1.Item2} is a {u1.Item3}"); var u2 = ("Roger", "Roe", "driver"); Console.WriteLine($"{u2.Item1} {u2.Item2} is a {u2.Item3}");
我们创建两个元组并将它们的内容打印到控制台。
var u1 = Tuple.Create("John", "Done", "gardener"); Console.WriteLine($"{u1.Item1} {u1.Item2} is a {u1.Item3}");
这是创建元组的旧方法。创建了System.Tuple
的新实例。元组的成员通过ItemN成员访问。这个元组是一个引用类型。
var u2 = ("Roger", "Roe", "driver"); Console.WriteLine($"{u2.Item1} {u2.Item2} is a {u2.Item3}");
这是创建元组的最新方法。这个元组是一个值类型。我们用Item1
、Item2
和Item3
访问元组字段;但是,可以命名我们的字段。
$ dotnet run John Done is a gardener Roger Roe is a driver
C#元组字段名
我们可以命名我们的元组字段。
var u1 = (Name: "John Doe", Age: 34); Console.WriteLine($"{u1.Name} is {u1.Age} years old"); (string Name, int Age) u2 = ("Roger Roe", 55); Console.WriteLine($"{u2.Name} is {u2.Age} years old"); var name = "Jane Doe"; var age = 26; var u3 = (name, age); Console.WriteLine($"{u3.name} is {u3.age} years old");
该示例展示了三种不同的元组字段命名方式。
var u1 = (Name: "John Doe", Age: 34);
字段名和它的值用冒号分隔。字段以逗号分隔。
Console.WriteLine($"{u1.Name} is {u1.Age} years old");
这里我们通过名称引用元组字段。
(string Name, int Age) u2 = ("Roger Roe", 55);
当我们将一个元组分配给另一个元组时,我们在变量名前的一对圆括号内指定名称和类型。
var name = "Jane Doe"; var age = 26; var u3 = (name, age);
可以从现有变量创建元组。编译器推断字段的类型。
C#元组解构
我们可以在单个操作中解包元组中的所有项目。这称为元组解构。
var (name1, age1) = ("John Doe", 34); Console.WriteLine($"{name1} is {age1} years old"); (string name2, int age2) = ("Roger Roe", 55); Console.WriteLine($"{name2} is {age2} years old"); string name3; int age3; (name3, age3) = ("Jane Doe", 26); Console.WriteLine($"{name3} is {age3} years old");
该示例展示了如何解构元组。
var (name1, age1) = ("John Doe", 34);
元组字段值存储在name1
和age1
变量中。我们一次性完成变量定义和赋值。
(string name2, int age2) = ("Roger Roe", 55);
这里我们明确指定了变量类型。
string name3; int age3; (name3, age3) = ("Jane Doe", 26);
C#嵌套元组
可以将元组嵌套到其他元组中。
var data = ((1, 2, 3), (3, 4, 5), (6, 7, 8)); Console.WriteLine(data); Console.WriteLine(data.Item1); Console.WriteLine(data.Item2); Console.WriteLine(data.Item1); Console.WriteLine(data.Item1.Item1); Console.WriteLine(data.Item2.Item3);
在这个例子中,我们有一个元组,它有三个嵌套的元组,由三个值组成。
Console.WriteLine(data.Item1);
这里我们得到第一个嵌套元组:(1,2,3)
。
Console.WriteLine(data.Item1.Item1); Console.WriteLine(data.Item2.Item3);
这里我们得到第一个嵌套元组的第一个和第三个元素。
$ dotnet run ((1, 2, 3), (3, 4, 5), (6, 7, 8)) (1, 2, 3) (3, 4, 5) (1, 2, 3) 1 5
C#元组作为函数参数
元组可以是函数参数。
ShowInfo(("John", "Doe", "programmer")); ShowInfo(("Roger", "Roe", "driver")); ShowInfo(("Jane", "Doe", "teacher")); void ShowInfo((string FirstName, string LastName, string Occupation) u) { Console.WriteLine($"{u.FirstName} {u.LastName} is a {u.Occupation}"); }
在示例中,我们将元组传递给ShowInfo
函数,该函数从其字段构建并打印一条消息。
C#元组作为返回值
元组可以从函数返回。
var user = GetUser(); Console.WriteLine($"{user.FirstName} {user.LastName} is a {user.Occupation}"); (string FirstName, string LastName, string Occupation) GetUser() { return ("John", "Doe", "programmer"); }
GetUser的
返回类型是一个具有三个字段的元组。
在本文中,我们使用了C#中的元组。
列出所有C#教程。