C#元组类型System.ValueTuple

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#元组类型System.ValueTuple相关的知识,希望对你有一定的参考价值。

元组功能在 C# 7.0 及更高版本中可用,它提供了简洁的语法,用于将多个数据元素分组成一个轻型数据结构。

元组功能需要 System.ValueTuple 类型和相关的泛型类型(例如 System.ValueTuple<T1,T2>),这些类型在 .NET Core 和 .NET Framework 4.7 及更高版本中可用。若要在面向 .NET Framework 4.6.2 或更早版本的项目中使用元组,请将 NuGet 包 System.ValueTuple 添加到项目。

(double, int) t1 = (4.5, 3);
Console.WriteLine($"Tuple with elements t1.Item1 and t1.Item2.");
// Output:
// Tuple with elements 4.5 and 3.

(double Sum, int Count) t2 = (4.5, 3);
Console.WriteLine($"Sum of t2.Count elements is t2.Sum.");
// Output:
// Sum of 3 elements is 4.5.

,若要定义元组类型,需要指定其所有数据成员的类型,或者,可以指定字段名称。虽然不能在元组类型中定义方法,但可以使用 .NET 提供的方法

(double, int) t = (4.5, 3);
Console.WriteLine(t.ToString());
Console.WriteLine($"Hash code of t is t.GetHashCode().");
// Output:
// (4.5, 3)
// Hash code of (4.5, 3) is 718460086.

元组最常见的用例之一是作为方法返回类型。也就是说,你可以将方法结果分组为元组返回类型,而不是定义 out 方法参数,

var xs = new[]  4, 7, 9 ;
var limits = FindMinMax(xs);
Console.WriteLine($"Limits of [string.Join(" ", xs)] are limits.min and limits.max");
// Output:
// Limits of [4 7 9] are 4 and 9

var ys = new[]  -9, 0, 67, 100 ;
var (minimum, maximum) = FindMinMax(ys);
Console.WriteLine($"Limits of [string.Join(" ", ys)] are minimum and maximum");
// Output:
// Limits of [-9 0 67 100] are -9 and 100

(int min, int max) FindMinMax(int[] input)

    if (input is null || input.Length == 0)
    
        throw new ArgumentException("Cannot find minimum and maximum of a null or empty array.");
    

    var min = int.MaxValue;
    var max = int.MinValue;
    foreach (var i in input)
    
        if (i < min)
        
            min = i;
        
        if (i > max)
        
            max = i;
        
    
    return (min, max);

以上是关于C#元组类型System.ValueTuple的主要内容,如果未能解决你的问题,请参考以下文章

C#里低版本使用元组(System.ValueTuple)

未定义或导入预定义类型“System.ValueTuple´2”

无法加载文件或程序集'System.ValueTuple'

是否可以将 System.ValueTuple 4.5.0 安装到 TFS 2015 服务器上?

VS "15" 预览 5 中 VB 15 新增的功能

检查值元组是不是为默认值