📜  C#|价值元组<T1,T2,T3>结构(1)

📅  最后修改于: 2023-12-03 14:40:29.849000             🧑  作者: Mango

C# | 值元组<T1,T2,T3> 结构

在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
访问元素

值元组的元素可以通过Item1Item2Item3等属性进行访问。例如,如果我们有一个类型为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
值元组 vs 类型元组

值元组的主要特点是它的元素数是固定的。如果我们要存储不同数量的元素,则可以使用其兄弟类型“类型元组”。类型元组是用于表示多个类型和值的一组类型。它是一个通用的类型,称为 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#。
总结

值元组是C# 7中的一个新特性。它是一个固定数量的元素序列,每个元素可以具有自己的类型。它的目的是将不同类型的多个值组合在一起,以便可以将它们作为返回值返回。元素可以通过Item1Item2Item3等属性进行访问。它的兄弟类型"类型元组"可以用来存储任意数量的元素。