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

Definition

Represents a 3-tuple, or triple.

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

Inheritance

Attributes

Implements

A tuple is a data structure that has a specific number and sequence of values. The Tuple<T1,T2,T3> class represents a 3-tuple, or triple, which is a tuple that has three components.

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

Tuples are commonly used in four different ways:

using System;  
public class Example  
{  
   public static void Main()  
   {  
      Tuple<string, double, int>[] scores =  
                    { Tuple.Create("Jack", 78.8, 8),  
                      Tuple.Create("Abbey", 92.1, 9),  
                      Tuple.Create("Dave", 88.3, 9),  
                      Tuple.Create("Sam", 91.7, 8),  
                      Tuple.Create("Ed", 71.2, 5),  
                      Tuple.Create("Penelope", 82.9, 8),  
                      Tuple.Create("Linda", 99.0, 9),  
                      Tuple.Create("Judith", 84.3, 9) };  
      var result = ComputeStatistics(scores);  
      Console.WriteLine("Mean score: {0:N2} (SD={1:N2}) (n={2})",  
                        result.Item2, result.Item3, result.Item1);  
   }  
   private static Tuple<int, double, double> ComputeStatistics(Tuple<string, double, int>[] scores)  
   {  
      int n = 0;  
      double sum = 0;  
      // Compute the mean.  
      foreach (var score in scores)  
      {  
         n += score.Item3;  
         sum += score.Item2 * score.Item3;  
      }  
      double mean = sum / n;  
        
      // Compute the standard deviation.  
      double ss = 0;  
      foreach (var score in scores)  
      {  
         ss = Math.Pow(score.Item2 - mean, 2);  
      }  
      double sd = Math.Sqrt(ss/scores.Length);  
      return Tuple.Create(scores.Length, mean, sd);  
   }  
}  
// The example displays the following output:  
//       Mean score: 87.02 (SD=0.96) (n=8)  
open System  
let computeStatistics (scores: Tuple<string, double, int>[]) =  
    let mutable n = 0  
    let mutable sum = 0.  
    // Compute the mean.  
    for score in scores do  
        n <- n + score.Item3  
        sum <- sum + score.Item2 * double score.Item3  
    let mean = sum / double n  
      
    // Compute the standard deviation.  
    let mutable ss = 0.  
    for score in scores do  
        ss <- (score.Item2 - mean) ** 2.  
    let sd = sqrt (ss / double scores.Length)  
    Tuple.Create(scores.Length, mean, sd)  
let scores =  
    [| Tuple.Create("Jack", 78.8, 8)  
       Tuple.Create("Abbey", 92.1, 9)  
       Tuple.Create("Dave", 88.3, 9)  
       Tuple.Create("Sam", 91.7, 8)  
       Tuple.Create("Ed", 71.2, 5)  
       Tuple.Create("Penelope", 82.9, 8)  
       Tuple.Create("Linda", 99.0, 9)  
       Tuple.Create("Judith", 84.3, 9) |]  
let result = computeStatistics scores  
printfn $"Mean score: {result.Item2:N2} (SD={result.Item3:N2}) (n={result.Item1})"  
// The example displays the following output:  
//       Mean score: 87.02 (SD=0.96) (n=8)  
Module Example  
   Public Sub Main()  
      Dim scores() =  
                      { Tuple.Create("Jack", 78.8, 8),  
                        Tuple.Create("Abbey", 92.1, 9),  
                        Tuple.Create("Dave", 88.3, 9),  
                        Tuple.Create("Sam", 91.7, 8),  
                        Tuple.Create("Ed", 71.2, 5),  
                        Tuple.Create("Penelope", 82.9, 8),  
                        Tuple.Create("Linda", 99.0, 9),  
                        Tuple.Create("Judith", 84.3, 9) }  
      Dim result = ComputeStatistics(scores)  
      Console.WriteLine("Mean score: {0:N2} (SD={1:N2}) (n={2})",  
                        result.Item2, result.Item3, result.Item1)  
   End Sub  
     
   Private Function ComputeStatistics(scores() As Tuple(Of String, Double, Integer)) _  
                                As Tuple(Of Integer, Double, Double)  
      Dim n As Integer = 0  
      Dim sum As Double = 0  
        
      ' Compute the mean.  
      For Each score In scores  
         n+= score.Item3  
         sum += score.Item2 * score.Item3  
      Next  
      Dim mean As Double = sum / n  
      ' Compute the standard deviation.  
      Dim ss As Double = 0  
      For Each score In scores  
         ss = Math.Pow(score.Item2 - mean, 2)  
      Next  
      Dim sd As Double = Math.Sqrt(ss/scores.Length)  
      Return Tuple.Create(scores.Length, mean, sd)  
   End Function  
End Module  
' The example displays the following output:  
'       Mean score: 87.02 (SD=0.96) (n=8)  

Constructors

Properties

Methods

Explicit Interface Implementations

IComparable.CompareTo(Object) Compares the current Tuple<T1,T2,T3> 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> 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> 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> 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>(Tuple<T1,T2,T3>, T1, T2, T3) Deconstructs a tuple with 3 elements into separate variables.
ToValueTuple<T1,T2,T3>(Tuple<T1,T2,T3>) Converts an instance of the Tuple class to an instance of the ValueTuple structure.

Applies to

See also