Tuple<T1,T2,T3,T4> 类

定义

表示 4 元组,或四元组。

C#
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
C#
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple
C#
[System.Serializable]
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable

类型参数

T1

此元组的第一个组件的类型。

T2

此元组的第二个组件的类型。

T3

此元组的第三个组件的类型。

T4

此元组的第四个组件的类型。

继承
Tuple<T1,T2,T3,T4>
属性
实现

注解

元组是具有特定数目和值序列的数据结构。 该 Tuple<T1,T2,T3,T4> 类表示一个 4 元组或四个元组,它是具有四个组件的元组。

可以通过调用Tuple<T1,T2,T3,T4>构造函数或静态Tuple.Create<T1,T2,T3,T4>(T1, T2, T3, T4)方法来实例Tuple<T1,T2,T3,T4>化对象。 可以使用只读Item1Item2Item3实例属性和Item4实例属性检索元组组件的值。

元组通常以四种不同的方式使用:

  • 表示单个数据集。 例如,元组可以表示数据库记录,其组件可以表示记录的各个字段。

  • 为了提供对数据集的轻松访问和操作。 以下示例定义了一个对象数组 Tuple<T1,T2,T3,T4> ,其中包含棒球投手的名称、他们投球的局数,以及 (运行数,这些跑次得分时没有) 场错误,以及他们放弃的命中数。 该数组传递给 ComputeStatistics 该方法,该方法计算每个投手赚取的运行平均数 (九局比赛) 中给出的平均运行次数,以及每个局的平均命中次数。 该方法还使用这两个平均值来计算假设的有效性平均值。

    C#
    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          Tuple<string, decimal, int, int>[] pitchers  =  
               { Tuple.Create("McHale, Joe", 240.1m, 221, 96),
                 Tuple.Create("Paul, Dave", 233.1m, 231, 84), 
                 Tuple.Create("Williams, Mike", 193.2m, 183, 86),
                 Tuple.Create("Blair, Jack", 168.1m, 146, 65), 
                 Tuple.Create("Henry, Walt", 140.1m, 96, 30),
                 Tuple.Create("Lee, Adam", 137.2m, 109, 45),
                 Tuple.Create("Rohr, Don", 101.0m, 110, 42) };
          Tuple<string, double, double, double>[] results= ComputeStatistics(pitchers);
    
          // Display the results.
          Console.WriteLine("{0,-20} {1,9} {2,11} {3,15}\n", 
                            "Pitcher", "ERA", "Hits/Inn.", "Effectiveness");
          foreach (var result in results)
             Console.WriteLine("{0,-20} {1,9:F2} {2,11:F2} {3,15:F2}",  
                            result.Item1, result.Item2, result.Item3, result.Item4);
       }
    
       private static Tuple<string, double, double, double>[] ComputeStatistics(Tuple<string, decimal, int, int>[] pitchers)
       {    
          var list = new List<Tuple<string, double, double, double>>();
          Tuple<string, double, double, double> result;
    
          foreach (var pitcher in pitchers)
          {
             // Decimal portion of innings pitched represents 1/3 of an inning
             double innings = (double) Math.Truncate(pitcher.Item2);
             innings = innings + (((double)pitcher.Item2 - innings) * .33);
             
             double ERA = pitcher.Item4/innings * 9;
             double hitsPerInning = pitcher.Item3/innings;
             double EI = (ERA * 2 + hitsPerInning * 9)/3;
             result = new Tuple<string, double, double, double>
                               (pitcher.Item1, ERA, hitsPerInning, EI);
             list.Add(result);
          }
          return list.ToArray();
       }
    }
    // The example displays the following output;
    //       Pitcher                    ERA   Hits/Inn.   Effectiveness
    //       
    //       McHale, Joe               3.60        0.92            5.16
    //       Paul, Dave                3.24        0.99            5.14
    //       Williams, Mike            4.01        0.95            5.52
    //       Blair, Jack               3.48        0.87            4.93
    //       Henry, Walt               1.93        0.69            3.34
    //       Lee, Adam                 2.95        0.80            4.36
    //       Rohr, Don                 3.74        1.09            5.76
    
  • 从方法返回多个值,而不使用 out C#) 中的参数 (或ByRefVisual Basic) 中的参数 (。 例如,上一个示例在对象数组 Tuple<T1,T2,T3,T4> 中返回其计算统计信息以及投手的名称。

  • 通过单个参数将多个值传递给方法。 例如,该方法 Thread.Start(Object) 有一个参数,可用于向线程在启动时执行的方法提供一个值。 如果将对象 Tuple<T1,T2,T3,T4> 作为方法参数提供,则可以提供线程的启动例程,其中包含四项数据。

构造函数

Tuple<T1,T2,T3,T4>(T1, T2, T3, T4)

初始化 Tuple<T1,T2,T3,T4> 类的新实例。

属性

Item1

获取当前 Tuple<T1,T2,T3,T4> 对象的第一个分量的值。

Item2

获取当前 Tuple<T1,T2,T3,T4> 对象的第二个分量的值。

Item3

获取当前 Tuple<T1,T2,T3,T4> 对象的第三个分量的值。

Item4

获取当前 Tuple<T1,T2,T3,T4> 对象的第四个分量的值。

方法

Equals(Object)

返回一个值,该值指示当前的 Tuple<T1,T2,T3,T4> 对象是否与指定对象相等。

GetHashCode()

返回当前 Tuple<T1,T2,T3,T4> 对象的哈希代码。

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示此 Tuple<T1,T2,T3,T4> 实例的值的字符串。

显式接口实现

IComparable.CompareTo(Object)

比较当前 Tuple<T1,T2,T3,T4> 对象与指定对象,并返回一个整数,该整数指示当前对象在排序顺序中的位置:是在指定对象之前、之后还是在与指定对象相同的位置。

IStructuralComparable.CompareTo(Object, IComparer)

使用指定的比较器将当前的 Tuple<T1,T2,T3,T4> 对象与指定对象进行比较,并返回一个整数,该整数指示当前对象在排序顺序中的位置是在指定对象之前、之后还是与其相同。

IStructuralEquatable.Equals(Object, IEqualityComparer)

返回一个值,该值根据指定的比较方法指示当前的 Tuple<T1,T2,T3,T4> 对象是否与指定对象相等。

IStructuralEquatable.GetHashCode(IEqualityComparer)

使用指定的计算方法计算当前 Tuple<T1,T2,T3,T4> 对象的哈希代码。

ITuple.Item[Int32]

获取指定 Tuple 元素的值。

ITuple.Length

获取 Tuple 中的元素数。

扩展方法

Deconstruct<T1,T2,T3,T4>(Tuple<T1,T2,T3,T4>, T1, T2, T3, T4)

将具有 4 个元素的元组解构为不同的变量。

ToValueTuple<T1,T2,T3,T4>(Tuple<T1,T2,T3,T4>)

Tuple 类的实例转换为 ValueTuple 结构的实例。

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另请参阅