Tuple<T1,T2,T3,T4> 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 4 元组,或四元组。
generic <typename T1, typename T2, typename T3, typename T4>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatablegeneric <typename T1, typename T2, typename T3, typename T4>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable, System::Runtime::CompilerServices::ITuplepublic class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatablepublic class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple[System.Serializable]
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatabletype Tuple<'T1, 'T2, 'T3, 'T4> = class
    interface IStructuralComparable
    interface IStructuralEquatable
    interface IComparabletype Tuple<'T1, 'T2, 'T3, 'T4> = class
    interface IStructuralComparable
    interface IStructuralEquatable
    interface IComparable
    interface ITuple[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3, 'T4> = class
    interface IStructuralEquatable
    interface IStructuralComparable
    interface IComparable[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3, 'T4> = class
    interface IStructuralEquatable
    interface IStructuralComparable
    interface IComparable
    interface ITuplePublic Class Tuple(Of T1, T2, T3, T4)
Implements IComparable, IStructuralComparable, IStructuralEquatablePublic Class Tuple(Of T1, T2, T3, T4)
Implements IComparable, IStructuralComparable, IStructuralEquatable, ITuple类型参数
- 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>化对象。 可以使用只读Item1、Item2Item3实例属性和Item4实例属性检索元组组件的值。
元组通常以四种不同的方式使用:
- 表示单个数据集。 例如,元组可以表示数据库记录,其组件可以表示记录的各个字段。 
- 为了提供对数据集的轻松访问和操作。 以下示例定义了一个对象数组 Tuple<T1,T2,T3,T4> ,其中包含棒球投手的名称、他们投球的局数,以及 (运行数,这些跑次得分时没有) 场错误,以及他们放弃的命中数。 该数组传递给 - ComputeStatistics该方法,该方法计算每个投手赚取的运行平均数 (九局比赛) 中给出的平均运行次数,以及每个局的平均命中次数。 该方法还使用这两个平均值来计算假设的有效性平均值。- 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- open System let computeStatistics (pitchers: Tuple<string, decimal, int, int>[]) = [| for pitcher in pitchers do // Decimal portion of innings pitched represents 1/3 of an inning let innings = truncate (double pitcher.Item2) |> double let innings = innings + (double pitcher.Item2 - innings) * 0.33 let ERA = double pitcher.Item4 / innings * 9. let hitsPerInning = double pitcher.Item3 / innings let EI = (ERA * 2. + hitsPerInning * 9.) / 3. Tuple<string, double, double, double>(pitcher.Item1, ERA, hitsPerInning, EI)|] let 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) |] let results = computeStatistics pitchers // Display the results. printfn "%-20s %9s %11s %15s\n" "Pitcher" "ERA" "Hits/Inn." "Effectiveness" for result in results do printfn $"{result.Item1,-20} {result.Item2,9:F2} {result.Item3,11:F2} {result.Item4,15:F2}" // 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- Imports System.Collections.Generic Module Example Public Sub Main() Dim pitchers() = { Tuple.Create("McHale, Joe", 240.1d, 221, 96), Tuple.Create("Paul, Dave", 233.1d, 231, 84), Tuple.Create("Williams, Mike", 193.2d, 183, 86), Tuple.Create("Blair, Jack", 168.1d, 146, 65), Tuple.Create("Henry, Walt", 140.1d, 96, 30), Tuple.Create("Lee, Adam", 137.2d, 109, 45), Tuple.Create("Rohr, Don", 101.0d, 110, 42) } Dim results() = ComputeStatistics(pitchers) ' Display the results. Console.WriteLine("{0,-20} {1,9} {2,11} {3,15}", "Pitcher", "ERA", "Hits/Inn.", "Effectiveness") Console.WriteLine() For Each result In results Console.WriteLine("{0,-20} {1,9:F2} {2,11:F2} {3,15:F2}", result.Item1, result.Item2, result.Item3, result.Item4) Next End Sub Private Function ComputeStatistics(pitchers() As Tuple(Of String, Decimal, Integer, Integer)) _ As Tuple(Of String, Double, Double, Double)() Dim list As New List(Of Tuple(Of String, Double, Double, Double)) Dim result As Tuple(Of String, Double, Double, Double) For Each pitcher As Tuple(Of String, Decimal, Integer, Integer) In pitchers ' Decimal portion of innings pitched represents 1/3 of an inning Dim innings As Double = CDbl(Math.Truncate(pitcher.Item2)) innings = innings + ((pitcher.Item2 - innings) * .33) Dim ERA As Double = pitcher.Item4/innings * 9 Dim hitsPerInning As Double = pitcher.Item3/innings Dim EI As Double = (ERA * 2 + hitsPerInning * 9)/3 result = New Tuple(Of String, Double, Double, Double) _ (pitcher.Item1, ERA, hitsPerInning, EI) list.Add(result) Next Return list.ToArray() End Function End Module ' 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
- 从方法返回多个值,而不使用 - outC#) 中的参数 (或- 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] | 获取指定  | 
| ITuple.Length | 获取  | 
扩展方法
| 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>) | 将  |