📅  最后修改于: 2023-12-03 14:40:29.849000             🧑  作者: Mango
在C# 7中,一个新的结构ValueType Tuple(值元组)被引入。值元组是一个固定数量的元素序列,每个元素可以具有自己的类型。它是一个通用的三元组类型,称为Tuple<T1,T2,T3>
。该结构的目的是将不同类型的多个值组合在一起,以便可以将它们作为返回值返回。
值元组的基本语法如下所示:
Tuple<T1, T2, T3> tupleValue = new Tuple<T1, T2, T3>(item1, item2, item3);
T1
- 类型的第一个元素。T2
- 类型的第二个元素。T3
- 类型的第三个元素。item1
,item2
,item3
- 元素的值。以下是一个简单的示例,展示如何在C#中声明并使用值元组。
using System;
class Program
{
static void Main()
{
var person = new Tuple<string, int, double>("Tom", 25, 79.5);
Console.WriteLine($"Name: {person.Item1}, Age: {person.Item2}, Weight: {person.Item3}");
}
}
输出应该为:
Name: Tom, Age: 25, Weight: 79.5
值元组的元素可以通过Item1
,Item2
和Item3
等属性进行访问。例如,如果我们有一个类型为Tuple<int, string, bool>
的值元组,我们可以通过以下方式访问其中的元素:
Tuple<int, string, bool> tupleValue = new Tuple<int, string, bool>(42, "Hello World", false);
Console.WriteLine($"Item 1: {tupleValue.Item1}");
Console.WriteLine($"Item 2: {tupleValue.Item2}");
Console.WriteLine($"Item 3: {tupleValue.Item3}");
输出应该为:
Item 1: 42
Item 2: Hello World
Item 3: False
我们也可以使用元组分配来提取值元组的元素。
var tupleValue = Tuple.Create(42, "Hello World", false);
var (item1, item2, item3) = tupleValue;
Console.WriteLine($"Item 1: {item1}");
Console.WriteLine($"Item 2: {item2}");
Console.WriteLine($"Item 3: {item3}");
输出应该为:
Item 1: 42
Item 2: Hello World
Item 3: False
值元组的主要特点是它的元素数是固定的。如果我们要存储不同数量的元素,则可以使用其兄弟类型“类型元组”。类型元组是用于表示多个类型和值的一组类型。它是一个通用的类型,称为 ValueTuple<T1, T2, ..., TN>
。
以下是一个展示类型元组与值元组的比较:
// 值元组
var person1 = new Tuple<string, int, double>("Tom", 25, 79.5); // 用于固定数量的元素
var person2 = (name: "Tom", age: 25, weight: 79.5); // 用于所有数量的元素
// 类型元组
var person3 = (name: "Tom", age: 25, weight: 79.5); // 用于所有数量的元素
var person4 = (name: "Tom", age: 25, weight: 79.5, address: "123 Main St"); // 用于所有数量的元素
在这个例子中,我们可以看到,使用类型元组具有以下优点:
值元组是C# 7中的一个新特性。它是一个固定数量的元素序列,每个元素可以具有自己的类型。它的目的是将不同类型的多个值组合在一起,以便可以将它们作为返回值返回。元素可以通过Item1
,Item2
和Item3
等属性进行访问。它的兄弟类型"类型元组"可以用来存储任意数量的元素。