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::IStructuralEquatable
generic <typename T1, typename T2, typename T3, typename T4>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable, System::Runtime::CompilerServices::ITuple
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
public 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.IStructuralEquatable
type Tuple<'T1, 'T2, 'T3, 'T4> = class
interface IStructuralComparable
interface IStructuralEquatable
interface IComparable
type 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 ITuple
Public Class Tuple(Of T1, T2, T3, T4)
Implements IComparable, IStructuralComparable, IStructuralEquatable
Public 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
从方法返回多个值,而不使用
out
C#) 中的参数 (或ByRef
Visual 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>) |
将 |