Tuple<T1,T2,T3,T4,T5> Class (System) (original) (raw)

Definition

Represents a 5-tuple, or quintuple.

generic <typename T1, typename T2, typename T3, typename T4, typename T5>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable
generic <typename T1, typename T2, typename T3, typename T4, typename T5>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable, System::Runtime::CompilerServices::ITuple
public class Tuple<T1,T2,T3,T4,T5> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
public class Tuple<T1,T2,T3,T4,T5> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple
[System.Serializable]
public class Tuple<T1,T2,T3,T4,T5> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
type Tuple<'T1, 'T2, 'T3, 'T4, 'T5> = class
    interface IStructuralComparable
    interface IStructuralEquatable
    interface IComparable
type Tuple<'T1, 'T2, 'T3, 'T4, 'T5> = class
    interface IStructuralComparable
    interface IStructuralEquatable
    interface IComparable
    interface ITuple
[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3, 'T4, 'T5> = class
    interface IStructuralEquatable
    interface IStructuralComparable
    interface IComparable
[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3, 'T4, 'T5> = class
    interface IStructuralEquatable
    interface IStructuralComparable
    interface IComparable
    interface ITuple
Public Class Tuple(Of T1, T2, T3, T4, T5)
Implements IComparable, IStructuralComparable, IStructuralEquatable
Public Class Tuple(Of T1, T2, T3, T4, T5)
Implements IComparable, IStructuralComparable, IStructuralEquatable, ITuple

Type Parameters

T1

The type of the tuple's first component.

T2

The type of the tuple's second component.

T3

The type of the tuple's third component.

T4

The type of the tuple's fourth component.

T5

The type of the tuple's fifth component.

Inheritance

Attributes

Implements

A tuple is a data structure that has a specific number and sequence of values. The Tuple<T1,T2,T3,T4,T5> class represents a 5-tuple, or quintuple, which is a tuple that has five components.

You can instantiate a Tuple<T1,T2,T3,T4,T5> object by calling either the Tuple<T1,T2,T3,T4,T5> constructor or the static Tuple.Create<T1,T2,T3,T4,T5>(T1, T2, T3, T4, T5) method. You can retrieve the value of the tuple's components by using the read-only Item1, Item2, Item3, Item4, and Item5 instance properties.

Tuples are commonly used in four different ways:

using System;  
using System.Collections.Generic;  
public class Example  
{  
   public static void Main()  
   {  
      // Organization of runningBacks 5-tuple:  
      //    Component 1: Player name  
      //    Component 2: Number of games played  
      //    Component 3: Number of attempts (carries)  
      //    Component 4: Number of yards gained  
      //    Component 5: Number of touchdowns  
      Tuple<string, int, int, int, int>[] runningBacks =  
           { Tuple.Create("Payton, Walter", 190, 3838, 16726, 110),  
             Tuple.Create("Sanders, Barry", 153, 3062, 15269, 99),  
             Tuple.Create("Brown, Jim", 118, 2359, 12312, 106),  
             Tuple.Create("Dickerson, Eric", 144, 2996, 13259, 90),  
             Tuple.Create("Faulk, Marshall", 176, 2836, 12279, 100) };  
      // Calculate statistics.  
      // Organization of runningStats 5-tuple:  
      //    Component 1: Player name  
      //    Component 2: Number of attempts per game  
      //    Component 3: Number of yards per game  
      //    Component 4: Number of yards per attempt  
      //    Component 5: Number of touchdowns per attempt  
      Tuple<string, double, double, double, double>[] runningStats  =  
          ComputeStatistics(runningBacks);  
      // Display the result.  
      Console.WriteLine("{0,-16} {1,5} {2,6} {3,7} {4,7} {5,7} {6,7} {7,5} {8,7}\n",  
                        "Name", "Games", "Att", "Att/Gm", "Yards", "Yds/Gm",  
                        "Yds/Att", "TD", "TD/Att");  
      for (int ctr = 0; ctr < runningBacks.Length; ctr++)  
         Console.WriteLine("{0,-16} {1,5} {2,6:N0} {3,7:N1} {4,7:N0} {5,7:N1} {6,7:N2} {7,5} {8,7:N3}\n",  
                           runningBacks[ctr].Item1, runningBacks[ctr].Item2, runningBacks[ctr].Item3,  
                           runningStats[ctr].Item2, runningBacks[ctr].Item4, runningStats[ctr].Item3,  
                           runningStats[ctr].Item4, runningBacks[ctr].Item5, runningStats[ctr].Item5);  
   }  
   private static Tuple<string, double, double, double, double>[] ComputeStatistics(  
                Tuple<string, int, int, int, int>[] players)  
   {  
      Tuple<string, double, double, double, double> result;  
      var list = new List<Tuple<string, double, double, double, double>>();  
        
      foreach (var player in players)  
      {  
         // Create result object containing player name and statistics.  
         result = Tuple.Create(player.Item1,  
                               player.Item3/((double)player.Item2),  
                               player.Item4/((double)player.Item2),  
                               player.Item4/((double)player.Item3),  
                               player.Item5/((double)player.Item3));  
         list.Add(result);  
      }  
      return list.ToArray();  
   }  
}  
// The example displays the following output:  
//    Name             Games    Att  Att/Gm   Yards  Yds/Gm Yds/Att    TD  TD/Att  
//  
//    Payton, Walter     190  3,838    20.2  16,726    88.0    4.36   110   0.029  
//  
//    Sanders, Barry     153  3,062    20.0  15,269    99.8    4.99    99   0.032  
//  
//    Brown, Jim         118  2,359    20.0  12,312   104.3    5.22   106   0.045  
//  
//    Dickerson, Eric    144  2,996    20.8  13,259    92.1    4.43    90   0.030  
//  
//    Faulk, Marshall    176  2,836    16.1  12,279    69.8    4.33   100   0.035  
open System  
let computeStatistics (players: Tuple<string, int, int, int, int>[]) =  
    [| for player in players do  
        // Create result object containing player name and statistics.  
        Tuple.Create(player.Item1,  
                     double player.Item3 / double player.Item2,  
                     double player.Item4 / double player.Item2,  
                     double player.Item4 / double player.Item3,  
                     double player.Item5 / double player.Item3) |]  
// Organization of runningBacks 5-tuple:  
//    Component 1: Player name  
//    Component 2: Number of games played  
//    Component 3: Number of attempts (carries)  
//    Component 4: Number of yards gained  
//    Component 5: Number of touchdowns  
let runningBacks =  
    [| Tuple.Create("Payton, Walter", 190, 3838, 16726, 110)  
       Tuple.Create("Sanders, Barry", 153, 3062, 15269, 99)  
       Tuple.Create("Brown, Jim", 118, 2359, 12312, 106)  
       Tuple.Create("Dickerson, Eric", 144, 2996, 13259, 90)  
       Tuple.Create("Faulk, Marshall", 176, 2836, 12279, 100) |]  
// Calculate statistics.  
// Organization of runningStats 5-tuple:  
//    Component 1: Player name  
//    Component 2: Number of attempts per game  
//    Component 3: Number of yards per game  
//    Component 4: Number of yards per attempt  
//    Component 5: Number of touchdowns per attempt  
let runningStats = computeStatistics runningBacks  
// Display the result.  
printfn "%-16s %5s %6s %7s %7s %7s %7s %5s %7s\n" "Name" "Games" "Att" "Att/Gm" "Yards" "Yds/Gm" "Yds/Att" "TD" "TD/Att"  
for i = 0 to runningBacks.Length - 1 do  
    printfn $"{runningBacks[i].Item1,-16} {runningBacks[i].Item2,5} {runningBacks[i].Item3,6:N0} {runningBacks[i].Item2,7:N1} {runningBacks[i].Item4,7:N0} {runningBacks[i].Item3,7:N1} {runningBacks[i].Item4,7:N2} {runningBacks[i].Item5,5} {runningBacks[i].Item5,7:N3}\n"  
// The example displays the following output:  
//    Name             Games    Att  Att/Gm   Yards  Yds/Gm Yds/Att    TD  TD/Att  
//  
//    Payton, Walter     190  3,838    20.2  16,726    88.0    4.36   110   0.029  
//  
//    Sanders, Barry     153  3,062    20.0  15,269    99.8    4.99    99   0.032  
//  
//    Brown, Jim         118  2,359    20.0  12,312   104.3    5.22   106   0.045  
//  
//    Dickerson, Eric    144  2,996    20.8  13,259    92.1    4.43    90   0.030  
//  
//    Faulk, Marshall    176  2,836    16.1  12,279    69.8    4.33   100   0.035  
Imports System.Collections.Generic  
Module Example  
   Public Sub Main()  
      ' Organization of runningBacks 5-tuple:  
      '    Component 1: Player name  
      '    Component 2: Number of games played  
      '    Component 3: Number of attempts (carries)  
      '    Component 4: Number of yards gained  
      '    Component 5: Number of touchdowns  
      Dim runningBacks() =  
          { Tuple.Create("Payton, Walter", 190, 3838, 16726, 110),  
            Tuple.Create("Sanders, Barry", 153, 3062, 15269, 99),  
            Tuple.Create("Brown, Jim", 118, 2359, 12312, 106),  
            Tuple.Create("Dickerson, Eric", 144, 2996, 13259, 90),  
            Tuple.Create("Faulk, Marshall", 176, 2836, 12279, 100) }  
      ' Calculate statistics.  
      ' Organization of runningStats 5-tuple:  
      '    Component 1: Player name  
      '    Component 2: Number of attempts per game  
      '    Component 3: Number of yards per game  
      '    Component 4: Number of yards per attempt  
      '    Component 5: Number of touchdowns per attempt  
      Dim runningStats() = ComputeStatistics(runningBacks)  
      ' Display the result.  
      Console.WriteLine("{0,-16} {1,5} {2,6} {3,7} {4,7} {5,7} {6,7} {7,5} {8,7}",  
                        "Name", "Games", "Att", "Att/Gm", "Yards", "Yds/Gm",  
                        "Yds/Att", "TD", "TD/Att")  
      Console.WriteLine()  
      For ctr As Integer = 0 To runningBacks.Length - 1  
         Console.WriteLine("{0,-16} {1,5} {2,6:N0} {3,7:N1} {4,7:N0} {5,7:N1} {6,7:N2} {7,5} {8,7:N3}",  
                           runningBacks(ctr).Item1, runningBacks(ctr).Item2, runningBacks(ctr).Item3,  
                           runningStats(ctr).Item2, runningBacks(ctr).Item4, runningStats(ctr).Item3,  
                           runningStats(ctr).Item4, runningBacks(ctr).Item5, runningStats(ctr).Item5)  
         Console.WriteLine()  
      Next  
   End Sub  
   Private Function ComputeStatistics(players() As Tuple(Of String, Integer, Integer, Integer, Integer)) _  
                    As Tuple(Of String, Double, Double, Double, Double)()  
      Dim result As Tuple(Of String, Double, Double, Double, Double)  
      Dim list As New List(Of Tuple(Of String, Double, Double, Double, Double))()  
        
      For Each player In players  
         ' Create result object containing player name and statistics.  
         result = Tuple.Create(player.Item1,  
                            player.Item3/player.Item2, player.Item4/player.Item2,  
                            player.Item4/player.Item3, player.Item5/player.Item3)  
         list.Add(result)  
      Next  
      Return list.ToArray()  
   End Function  
End Module  
' The example displays the following output:  
'    Name             Games    Att  Att/Gm   Yards  Yds/Gm Yds/Att    TD  TD/Att  
'  
'    Payton, Walter     190  3,838    20.2  16,726    88.0    4.36   110   0.029  
'  
'    Sanders, Barry     153  3,062    20.0  15,269    99.8    4.99    99   0.032  
'  
'    Brown, Jim         118  2,359    20.0  12,312   104.3    5.22   106   0.045  
'  
'    Dickerson, Eric    144  2,996    20.8  13,259    92.1    4.43    90   0.030  
'  
'    Faulk, Marshall    176  2,836    16.1  12,279    69.8    4.33   100   0.035  

Constructors

Tuple<T1,T2,T3,T4,T5>(T1, T2, T3, T4, T5) Initializes a new instance of the Tuple<T1,T2,T3,T4,T5> class.

Properties

Item1 Gets the value of the current Tuple<T1,T2,T3,T4,T5> object's first component.
Item2 Gets the value of the current Tuple<T1,T2,T3,T4,T5> object's second component.
Item3 Gets the value of the current Tuple<T1,T2,T3,T4,T5> object's third component.
Item4 Gets the value of the current Tuple<T1,T2,T3,T4,T5> object's fourth component.
Item5 Gets the value of the current Tuple<T1,T2,T3,T4,T5> object's fifth component.

Methods

Equals(Object) Returns a value that indicates whether the current Tuple<T1,T2,T3,T4,T5> object is equal to a specified object.
GetHashCode() Returns the hash code for the current Tuple<T1,T2,T3,T4,T5> object.
GetType() Gets the Type of the current instance. (Inherited from Object)
MemberwiseClone() Creates a shallow copy of the current Object. (Inherited from Object)
ToString() Returns a string that represents the value of this Tuple<T1,T2,T3,T4,T5> instance.

Explicit Interface Implementations

IComparable.CompareTo(Object) Compares the current Tuple<T1,T2,T3,T4,T5> object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order.
IStructuralComparable.CompareTo(Object, IComparer) Compares the current Tuple<T1,T2,T3,T4,T5> object to a specified object by using a specified comparer and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order.
IStructuralEquatable.Equals(Object, IEqualityComparer) Returns a value that indicates whether the current Tuple<T1,T2,T3,T4,T5> object is equal to a specified object based on a specified comparison method.
IStructuralEquatable.GetHashCode(IEqualityComparer) Calculates the hash code for the current Tuple<T1,T2,T3,T4,T5> object by using a specified computation method.
ITuple.Item[Int32] Gets the value of the specified Tuple element.
ITuple.Length Gets the number of elements in the Tuple.

Extension Methods

Deconstruct<T1,T2,T3,T4,T5>(Tuple<T1,T2,T3,T4,T5>, T1, T2, T3, T4, T5) Deconstructs a tuple with 5 elements into separate variables.
ToValueTuple<T1,T2,T3,T4,T5>(Tuple<T1,T2,T3,T4,T5>) Converts an instance of the Tuple class to an instance of the ValueTuple structure.

Applies to

See also