Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase Tuple<T1, T2>

 

Publicado: noviembre de 2016

Representa una tupla de 2 o par.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Tuple<T1, T2>

[SerializableAttribute]
public class Tuple<T1, T2> : IStructuralEquatable, IStructuralComparable, 
	IComparable

Parámetros de tipo

T1

El tipo del primer componente de la tupla.

T2

El tipo del segundo componente de la tupla.

NombreDescripción
System_CAPS_pubmethodTuple<T1, T2>(T1, T2)

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

NombreDescripción
System_CAPS_pubpropertyItem1

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

System_CAPS_pubpropertyItem2

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

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Devuelve un valor que indica si el actual Tuple<T1, T2> objeto es igual a un objeto especificado.(Invalida Object.Equals(Object)).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash del objeto Tuple<T1, T2> actual.(Invalida Object.GetHashCode()).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa el valor de esta instancia de Tuple<T1, T2>.(Invalida Object.ToString()).

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethodIStructuralComparable.CompareTo(Object, IComparer)

Compara actual Tuple<T1, T2> con un objeto especificado utilizando un comparador especificado y devuelve un entero que indica si el objeto actual es anterior, posterior o en la misma posición que el objeto especificado en el criterio de ordenación.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIStructuralEquatable.Equals(Object, IEqualityComparer)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethodIStructuralEquatable.GetHashCode(IEqualityComparer)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethodIComparable.CompareTo(Object)

Compara el objeto Tuple<T1, T2> actual con un objeto especificado y devuelve un entero que indica si el objeto actual es anterior, posterior o está en la misma posición que el objeto especificado en el criterio de ordenación.

Una tupla es una estructura de datos que tiene un número específico y la secuencia de valores. La Tuple<T1, T2> clase representa una tupla de 2 o par, que es una tupla que tiene dos componentes. Una tupla de 2 es similar a un KeyValuePair<TKey, TValue> estructura.

Puede crear instancias de un Tuple<T1, T2> objeto mediante una llamada a la Tuple<T1, T2> constructor o el método estático Tuple.Create<T1, T2>(T1, T2) método. Puede recuperar los valores de los componentes de la tupla mediante el uso de solo lectura Item1 y Item2 propiedades de la instancia.

Tuplas se utilizan normalmente en cuatro formas distintas:

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

  • Para proporcionar un acceso sencillo a y la manipulación de un conjunto de datos. En el ejemplo siguiente se define una matriz de Tuple<T1, T2> objetos que contienen los nombres de los alumnos y sus correspondientes puntuaciones de pruebas. A continuación, recorre en iteración la matriz para calcular la puntuación media de las pruebas.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Tuple<string, Nullable<int>>[] scores = 
                        { new Tuple<string, Nullable<int>>("Jack", 78),
                          new Tuple<string, Nullable<int>>("Abbey", 92), 
                          new Tuple<string, Nullable<int>>("Dave", 88),
                          new Tuple<string, Nullable<int>>("Sam", 91), 
                          new Tuple<string, Nullable<int>>("Ed", null),
                          new Tuple<string, Nullable<int>>("Penelope", 82),
                          new Tuple<string, Nullable<int>>("Linda", 99),
                          new Tuple<string, Nullable<int>>("Judith", 84) };
          int number;
          double mean = ComputeMean(scores, out number);
          Console.WriteLine("Average test score: {0:N2} (n={1})", mean, number);
       }
    
       private static double ComputeMean(Tuple<string, Nullable<int>>[] scores, out int n) 
       {
          n = 0;      
          int sum = 0;
          foreach (var score in scores)
          {
             if (score.Item2.HasValue)
             { 
                n += 1;
                sum += score.Item2.Value;
             }
          }     
          if (n > 0)
             return sum / (double) n;
          else
             return 0;
       }
    }
    // The example displays the following output:
    //       Average test score: 88 (n=7)
    
  • 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, en el ejemplo siguiente se usa un Tuple<T1, T2> objeto para devolver el cociente y el resto que es el resultado de la división de enteros.

    using System;
    
    public class Class1
    {
       public static void Main()
       {
          int dividend, divisor;
          Tuple<int, int> result;
    
          dividend = 136945; divisor = 178;
          result = IntegerDivide(dividend, divisor);
          if (result != null)
             Console.WriteLine(@"{0} \ {1} = {2}, remainder {3}", 
                               dividend, divisor, result.Item1, result.Item2);
          else
             Console.WriteLine(@"{0} \ {1} = <Error>", dividend, divisor);
    
          dividend = Int32.MaxValue; divisor = -2073;
          result = IntegerDivide(dividend, divisor);
          if (result != null)
             Console.WriteLine(@"{0} \ {1} = {2}, remainder {3}", 
                               dividend, divisor, result.Item1, result.Item2);
          else
             Console.WriteLine(@"{0} \ {1} = <Error>", dividend, divisor);
       }
    
       private static Tuple<int, int> IntegerDivide(int dividend, int divisor)
       {
          try {
             int remainder;
             int quotient = Math.DivRem(dividend, divisor, out remainder);
             return new Tuple<int, int>(quotient, remainder);
          }   
          catch (DivideByZeroException) {
             return null;
          }      
       }
    }
    // The example displays the following output:
    //       136945 \ 178 = 769, remainder 63
    //       2147483647 \ -2073 = -1035930, remainder 757
    
  • Para pasar varios valores a un método a través de un solo parámetro. Por ejemplo, el Thread.Start(Object) método tiene un parámetro único que le permite proporcionar un valor para el método que el subproceso se ejecuta en el inicio. Si proporciona un Tuple<T1, T2> objeto como el argumento del método, puede proporcionar la rutina de inicio del subproceso con dos elementos de datos.

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 4.0
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: