开放的编程资料库

当前位置:我爱分享网 > C#教程 > 正文

C#元组

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}");

这是创建元组的最新方法。这个元组是一个值类型。我们用Item1Item2Item3访问元组字段;但是,可以命名我们的字段。

$ 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);

元组字段值存储在name1age1变量中。我们一次性完成变量定义和赋值。

(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#教程。

未经允许不得转载:我爱分享网 » C#元组

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏