Tuple<T1,T2,T3> Clase

Definición

Representa una tupla de 3 o 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

Parámetros de tipo

T1

Tipo del primer componente de la tupla.

T2

Tipo del segundo componente de la tupla.

T3

Tipo del tercer componente de la tupla.

Herencia
Tuple<T1,T2,T3>
Atributos
Implementaciones

Comentarios

Una tupla es una estructura de datos que tiene un número específico y una secuencia de valores. La Tuple<T1,T2,T3> clase representa una tupla de 3 o triple, que es una tupla que tiene tres componentes.

Puede crear instancias de un Tuple<T1,T2,T3> objeto llamando al constructor o al Tuple<T1,T2,T3> método estático Tuple.Create<T1,T2,T3>(T1, T2, T3) . Puede recuperar los valores de los componentes de la tupla mediante las propiedades de instancia de solo Item1lectura , Item2y Item3 .

Las tuplas se usan normalmente de cuatro maneras diferentes:

  • Para representar un único conjunto de datos. Por ejemplo, una tupla puede representar un registro de base de datos y sus componentes pueden representar campos individuales del registro.

  • Para facilitar el acceso y la manipulación de un conjunto de datos. En el ejemplo siguiente se define una matriz de Tuple<T1,T2,T3> objetos que contienen los nombres de los alumnos, sus puntuaciones de pruebas medias y el número de pruebas realizadas. La matriz se pasa al ComputeStatistics método , que calcula la desviación media y estándar de las puntuaciones de prueba.

    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)
    
  • Para devolver varios valores de un método sin el uso de out parámetros (en C#) o ByRef parámetros (en Visual Basic). Por ejemplo, el ejemplo anterior devuelve sus estadísticas de puntuación de prueba de resumen en un Tuple<T1,T2,T3> objeto .

  • Para pasar varios valores a un método a través de un único parámetro. Por ejemplo, el Thread.Start(Object) método tiene un único parámetro que permite proporcionar un valor al método que ejecuta el subproceso en el inicio. Si proporciona un Tuple<T1,T2,T3> objeto como argumento de método, puede proporcionar la rutina de inicio del subproceso con tres elementos de datos.

Constructores

Nombre Description
Tuple<T1,T2,T3>(T1, T2, T3)

Inicializa una nueva instancia de la clase Tuple<T1,T2,T3>.

Propiedades

Nombre Description
Item1

Obtiene el valor del primer componente del objeto actual Tuple<T1,T2,T3> .

Item2

Obtiene el valor del segundo componente del objeto actual Tuple<T1,T2,T3> .

Item3

Obtiene el valor del tercer componente del objeto actual Tuple<T1,T2,T3> .

Métodos

Nombre Description
Equals(Object)

Devuelve un valor que indica si el objeto actual Tuple<T1,T2,T3> es igual a un objeto especificado.

GetHashCode()

Devuelve el código hash del objeto actual Tuple<T1,T2,T3> .

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el valor de esta Tuple<T1,T2,T3> instancia.

Implementaciones de interfaz explícitas

Nombre Description
IComparable.CompareTo(Object)

Compara el objeto actual Tuple<T1,T2,T3> con un objeto especificado y devuelve un entero que indica si el objeto actual es antes, después o en la misma posición que el objeto especificado en el criterio de ordenación.

IStructuralComparable.CompareTo(Object, IComparer)

Compara el objeto actual Tuple<T1,T2,T3> con un objeto especificado mediante un comparador especificado y devuelve un entero que indica si el objeto actual es antes, después o en la misma posición que el objeto especificado en el criterio de ordenación.

IStructuralEquatable.Equals(Object, IEqualityComparer)

Devuelve un valor que indica si el objeto actual Tuple<T1,T2,T3> es igual a un objeto especificado en función de un método de comparación especificado.

IStructuralEquatable.GetHashCode(IEqualityComparer)

Calcula el código hash del objeto actual Tuple<T1,T2,T3> mediante un método de cálculo especificado.

ITuple.Item[Int32]

Obtiene el valor del elemento especificado Tuple .

ITuple.Length

Obtiene el número de elementos de .Tuple

Métodos de extensión

Nombre Description
Deconstruct<T1,T2,T3>(Tuple<T1,T2,T3>, T1, T2, T3)

Deconstruye una tupla con 3 elementos en variables independientes.

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

Convierte una instancia de la Tuple clase en una instancia de la ValueTuple estructura.

Se aplica a

Consulte también