Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Tuple<T1, T2, T3>.IStructuralEquatable.Equals (Object, IEqualityComparer)

 

Data di pubblicazione: ottobre 2016

Restituisce un valore che indica se l'oggetto corrente Tuple<T1, T2, T3> oggetto è uguale all'oggetto specificato in base a un metodo di confronto specificato.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

bool IStructuralEquatable.Equals(
	object other,
	IEqualityComparer comparer
)

Parametri

other
Type: System.Object

Oggetto da confrontare con questa istanza.

comparer
Type: System.Collections.IEqualityComparer

Oggetto che definisce il metodo da utilizzare per valutare se i due oggetti sono uguali.

Valore restituito

Type: System.Boolean

true Se l'istanza corrente è uguale all'oggetto specificato. in caso contrario, false.

Questo membro è un'implementazione esplicita di un membro di interfaccia. e può essere utilizzato solo quando si esegue il cast dell'istanza di Tuple<T1, T2, T3> su un'interfaccia IStructuralEquatable.

Il IEqualityComparer.Equals implementazione viene chiamato solo se other non null, e se può essere correttamente il cast (in c#) o convertire (in Visual Basic) per un Tuple<T1, T2, T3> oggetto i cui componenti sono dello stesso tipo dell'istanza corrente. Il Tuple<T1, T2, T3>.IStructuralEquatable.Equals passa primo metodo di Item1 valori del Tuple<T1, T2, T3> oggetti da confrontare con il IEqualityComparer.Equals implementazione. Se questa chiamata al metodo restituisce true, il metodo viene chiamato nuovamente e passato il Item2 i valori dei due Tuple<T1, T2, T3> oggetti. Se questa chiamata al metodo restituisce true nuovamente, il metodo viene chiamato una terza volta e vengono passati il Item3 i valori dei due Tuple<T1, T2, T3> oggetti.

L'esempio seguente definisce un Item2Comparer classe che implementa il IEqualityComparer l'interfaccia e cambia il modo in cui Tuple<T1, T2, T3> gli oggetti vengono valutati per verificarne l'uguaglianza. Il metodo restituisce sempre true quando viene passato il Item1 i valori delle due proprietà Tuple<T1, T2, T3> oggetti e chiama il Tuple<T1, T2, T3>.IStructuralEquatable.Equals metodo per valutare le Item2 i valori delle proprietà. Se questa chiamata al metodo restituisce true, relativo Item3 i valori delle proprietà vengono passati al metodo, che restituisce sempre true. Di conseguenza, il metodo verifica l'uguaglianza solo in base al valore della Item2 proprietà. L'output viene illustrato il risultato per un set di dati di Tuple<T1, T2, T3> gli oggetti che registrano i nomi, punteggio medio e numero di test di studenti in una classe.

using System;
using System.Collections;

public class Item2Comparer<T1, T2, T3> : IEqualityComparer
{
   new public bool Equals(object x, object y)
   {
      // Return true for all values of Item1.
      if (x is T1)
         return true;
      else if (x is T2)
         return x.Equals(y);
      else
         return true;	
   }

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

public class Example
{
   public static void Main()
   {
      Tuple<string, double, int>[] scores = 
           { Tuple.Create("Ed", 78.8, 8),
             Tuple.Create("Abbey", 92.1, 9), 
             Tuple.Create("Jim", 71.2, 9),
             Tuple.Create("Sam", 91.7, 8), 
             Tuple.Create("Sandy", 71.2, 5),
             Tuple.Create("Penelope", 82.9, 8),
             Tuple.Create("Serena", 71.2, 9),
             Tuple.Create("Judith", 84.3, 9) };

      for (int ctr = 0; ctr < scores.Length; ctr++)
      {
         IStructuralEquatable score = scores[ctr];
         for (int ctr2 = ctr + 1; ctr2 < scores.Length; ctr2++)
         {
            Console.WriteLine("{0} = {1}: {2}", score, 
                              scores[ctr2], 
                              score.Equals(scores[ctr2], 
                                           new Item2Comparer<string, double, int>()));
         }
         Console.WriteLine();
      }   
   }
}
// The example displays the following output:
//      (Ed, 78.8, 8) = (Abbey, 92.1, 9): False
//      (Ed, 78.8, 8) = (Jim, 71.2, 9): False
//      (Ed, 78.8, 8) = (Sam, 91.7, 8): False
//      (Ed, 78.8, 8) = (Sandy, 71.2, 5): False
//      (Ed, 78.8, 8) = (Penelope, 82.9, 8): False
//      (Ed, 78.8, 8) = (Serena, 71.2, 9): False
//      (Ed, 78.8, 8) = (Judith, 84.3, 9): False
//
//      (Abbey, 92.1, 9) = (Jim, 71.2, 9): False
//      (Abbey, 92.1, 9) = (Sam, 91.7, 8): False
//      (Abbey, 92.1, 9) = (Sandy, 71.2, 5): False
//      (Abbey, 92.1, 9) = (Penelope, 82.9, 8): False
//      (Abbey, 92.1, 9) = (Serena, 71.2, 9): False
//      (Abbey, 92.1, 9) = (Judith, 84.3, 9): False
//      
//      (Jim, 71.2, 9) = (Sam, 91.7, 8): False
//      (Jim, 71.2, 9) = (Sandy, 71.2, 5): True
//      (Jim, 71.2, 9) = (Penelope, 82.9, 8): False
//      (Jim, 71.2, 9) = (Serena, 71.2, 9): True
//      (Jim, 71.2, 9) = (Judith, 84.3, 9): False
//
//      (Sam, 91.7, 8) = (Sandy, 71.2, 5): False
//      (Sam, 91.7, 8) = (Penelope, 82.9, 8): False
//      (Sam, 91.7, 8) = (Serena, 71.2, 9): False
//      (Sam, 91.7, 8) = (Judith, 84.3, 9): False
//
//      (Sandy, 71.2, 5) = (Penelope, 82.9, 8): False
//      (Sandy, 71.2, 5) = (Serena, 71.2, 9): True
//      (Sandy, 71.2, 5) = (Judith, 84.3, 9): False
//
//      (Penelope, 82.9, 8) = (Serena, 71.2, 9): False
//      (Penelope, 82.9, 8) = (Judith, 84.3, 9): False
//
//      (Serena, 71.2, 9) = (Judith, 84.3, 9): False

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 4.0
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: