📜  C#7.0 元组(1)

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

C#7.0 元组介绍

在 C#7.0 中,新增了元组(Tuple)类型,可以让程序员更方便地组织和返回多个值。元组是一个不同类型的值的集合,在元组中每个值都有其对应的类型。

元组的定义

元组的定义可以使用 Tuple 类型,也可以使用值类型的捕获方式。

// 使用 Tuple 类型定义元组
Tuple<int, string> tuple1 = new Tuple<int, string>(1, "Hello");

// 使用值类型定义元组
var tuple2 = (1, "Hello");
访问元组中的值

元组中的值可以通过索引值或命名元素来访问。

// 通过索引值访问元组中的值
var tuple = (1, "Hello");
Console.WriteLine(tuple.Item1);
Console.WriteLine(tuple.Item2);

// 通过命名元素访问元组中的值
var employee = (Id: 123, Name: "John Smith", Age: 30);
Console.WriteLine(employee.Id);
Console.WriteLine(employee.Name);
Console.WriteLine(employee.Age);
元组的赋值和返回

元组可以作为函数的返回值或参数,也可以通过解构来赋值给多个变量。

// 返回元组类型
(string, int) GetPersonInfo()
{
    return ("John Smith", 30);
}

// 使用元组作为函数返回值
var personInfo = GetPersonInfo();
Console.WriteLine($"Name: {personInfo.Item1}, Age: {personInfo.Item2}");

// 使用元组解构的方式赋值
var (name, age) = GetPersonInfo();
Console.WriteLine($"Name: {name}, Age: {age}");
元组和 LINQ

在使用 LINQ 时,元组可以方便地组织查询结果的返回值,同时也可以方便地对结果进行处理和转换。

var numbers = new[] { 1, 2, 3, 4, 5 };
var result = numbers
    .Select(x => (Value: x, IsEven: x % 2 == 0))
    .Where(x => x.IsEven)
    .OrderByDescending(x => x.Value)
    .ToList();

foreach (var item in result)
{
    Console.WriteLine(item.Value);
}

以上就是 C#7.0 元组的介绍,使用元组可以让程序员更方便地组织和返回多个值,同时也方便地对结果进行处理和转换。