Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Tuple<T1, T2, T3, T4>.IStructuralEquatable.Equals (Método)

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

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

bool IStructuralEquatable.Equals(
	Object other,
	IEqualityComparer comparer
)

Parámetros

other
Tipo: System.Object
Objeto que se va a comparar con esta instancia.
comparer
Tipo: System.Collections.IEqualityComparer
Un objeto que define el método que se usa para evaluar si los dos objetos son iguales.

Valor devuelto

Tipo: System.Boolean
Es true si la instancia actual es igual al objeto especificado; en caso contrario, es false.

Implementaciones

IStructuralEquatable.Equals(Object, IEqualityComparer)

Este miembro es una implementación explícita de un miembro de interfaz. Solo se puede utilizar cuando la instancia de Tuple<T1, T2, T3, T4> se convierte en una interfaz IStructuralEquatable.

Solo se llama a la implementación IEqualityComparer.Equals si other no es null y si se puede convertir (en C# o Visual Basic) correctamente en un objeto Tuple<T1, T2, T3, T4> cuyos componentes sean de los mismos tipos que la instancia actual. El método IStructuralEquatable.Equals(Object, IEqualityComparer) pasa en primer lugar los valores Item1 de los objetos Tuple<T1, T2, T3, T4> que se van a comparar a la implementación IEqualityComparer.Equals. Si esta llamada al método devuelve true, el método se llama de nuevo y pasa los valores Item2 de los dos objetos Tuple<T1, T2, T3, T4>. Si esta llamada al método devuelve true de nuevo, el método se llama una tercera vez y pasa los valores Item3 de los dos objetos Tuple<T1, T2, T3, T4>. Si esta llamada al método devuelve true de nuevo, el método se llama por cuarta y última vez y pasa los valores Item4 de los dos objetos Tuple<T1, T2, T3, T4>.

En el ejemplo siguiente se define una clase Item3And4Comparer que implementa la interfaz IEqualityComparer y cambia la manera en la que se evalúa la igualdad de los objetos Tuple<T1, T2, T3, T4>. El método siempre devuelve true cuando se pasan los valores de propiedad Item2 e Item1 de dos objetos Tuple<T1, T2, T3, T4>, y llama al método obj.Equals para evaluar sus valores de propiedad Item3. Si esta llamada al método devuelve true, también se llama al método obj.Equals para evaluar los valores de propiedad Item4 de las tuplas. Como resultado, el método comprueba la igualdad basándose solo en los valores de las propiedades Item4 e Item3. La salida muestra el resultado para un conjunto de datos de objetos Tuple<T1, T2, T3, T4> que graban el nombre de una ciudad americana, el mes del año y el promedio de temperaturas altas y bajas durante ese mes.


using System;
using System.Collections;

public class Item3And4Comparer<T1, T2, T3, T4> : IEqualityComparer
{
   private int argument = 0;

   new public bool Equals(object x, object y)
   {
      argument++;

      // Return true for all values of Item1, Item2.
      if (argument <= 2)
         return true;
      else
         return x.Equals(y);
   }

   public int GetHashCode(object obj)
   {
      if (obj is T1)
         return ((T1) obj).GetHashCode();
      else if (obj is T2)
         return ((T2) obj).GetHashCode();
      else if (obj is T3)
         return ((T3) obj).GetHashCode();
      else
         return ((T4) obj).GetHashCode();
   }
}

public class Example
{
   public static void Main()
   {
      Tuple<string, int, double, double>[] temperatures = 
            { Tuple.Create("New York, NY", 4, 61.0, 43.0),
              Tuple.Create("Chicago, IL", 2, 34.0, 18.0), 
              Tuple.Create("Newark, NJ", 4, 61.0, 43.0),
              Tuple.Create("Boston, MA", 6, 77.0, 59.0),
              Tuple.Create("Detroit, MI", 9, 74.0, 53.0),
              Tuple.Create("Minneapolis, MN", 8, 81.0, 61.0) }; 
      // Compare each item with every other item for equality.
      for (int ctr = 0; ctr < temperatures.Length; ctr++)
      {
         IStructuralEquatable temperatureInfo = temperatures[ctr];
         for (int ctr2 = ctr + 1; ctr2 < temperatures.Length; ctr2++)
            Console.WriteLine("{0} = {1}: {2}", 
                              temperatureInfo, temperatures[ctr2], 
                              temperatureInfo.Equals(temperatures[ctr2], 
                                              new Item3And4Comparer<string, int, double, double>()));

         Console.WriteLine();                                               
      }
   }
}
// The example displays the following output:
//    (New York, NY, 4, 61, 43) = (Chicago, IL, 2, 34, 18): False
//    (New York, NY, 4, 61, 43) = (Newark, NJ, 4, 61, 43): True
//    (New York, NY, 4, 61, 43) = (Boston, MA, 6, 77, 59): False
//    (New York, NY, 4, 61, 43) = (Detroit, MI, 9, 74, 53): False
//    (New York, NY, 4, 61, 43) = (Minneapolis, MN, 8, 81, 61): False
//    
//    (Chicago, IL, 2, 34, 18) = (Newark, NJ, 4, 61, 43): False
//    (Chicago, IL, 2, 34, 18) = (Boston, MA, 6, 77, 59): False
//    (Chicago, IL, 2, 34, 18) = (Detroit, MI, 9, 74, 53): False
//    (Chicago, IL, 2, 34, 18) = (Minneapolis, MN, 8, 81, 61): False
//    
//    (Newark, NJ, 4, 61, 43) = (Boston, MA, 6, 77, 59): False
//    (Newark, NJ, 4, 61, 43) = (Detroit, MI, 9, 74, 53): False
//    (Newark, NJ, 4, 61, 43) = (Minneapolis, MN, 8, 81, 61): False
//    
//    (Boston, MA, 6, 77, 59) = (Detroit, MI, 9, 74, 53): False
//    (Boston, MA, 6, 77, 59) = (Minneapolis, MN, 8, 81, 61): False
//    
//    (Detroit, MI, 9, 74, 53) = (Minneapolis, MN, 8, 81, 61): False


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Compatible con: 4

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft