Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo Tuple<T1, T2, T3, T4, T5, T6, T7>.IStructuralEquatable.Equals

Restituisce un valore che indica se l'oggetto Tuple<T1, T2, T3, T4, T5, T6, T7> corrente è uguale a un 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
Tipo: System.Object
L'oggetto da confrontare con questa istanza.
comparer
Tipo: System.Collections.IEqualityComparer
Oggetto che definisce il metodo da utilizzare per determinare se i due oggetti sono uguali.

Valore restituito

Tipo: System.Boolean
true se l'istanza corrente è uguale all'oggetto specificato; in caso contrario false.

Implementa

IStructuralEquatable.Equals(Object, IEqualityComparer)

Questo membro è un’implementazione esplicita di un membro di un'interfaccia. Può essere utilizzato solo quando si esegue il cast dell'istanza Tuple<T1, T2, T3, T4, T5, T6, T7> a un'interfaccia IStructuralEquatable.

L'implementazione IEqualityComparer.Equals viene chiamata solo se other non è null e se può esserne eseguito il cast correttamente (in C#) o convertita (in Visual Basic) in un oggetto Tuple<T1, T2, T3, T4, T5, T6, T7> i cui componenti sono dello stesso tipo dell'istanza corrente. Il metodo IStructuralEquatable.Equals(Object, IEqualityComparer) prima passa i valori Item1 degli oggetti Tuple<T1, T2, T3, T4, T5, T6, T7> da confrontare all'implementazione IEqualityComparer.Equals. Se questa chiamata al metodo restituisce true, il metodo viene chiamato nuovamente e viene passato ai valori Item2 dei due oggetti Tuple<T1, T2, T3, T4, T5, T6, T7>. Questa operazione continua finché la chiamata al metodo non restituisce false quando viene confrontata una coppia specifica di valori Item oppure i due valori Item7 vengono passati al metodo.

Nell'esempio seguente viene definita una classe RateComparer che esegue un test personalizzato per l'uguaglianza. Se i valori passati al metodo IStructuralEquatable.Equals sono di tipo Single o Double, il metodo consente di verificare l'uguaglianza utilizzando un massimo di tre cifre frazionarie. In caso contrario, chiama semplicemente il metodo Equals del parametro x. Nell'esempio viene utilizzata questa implementazione IEqualityComparer per determinare se quattro oggetti Tuple<T1, T2, T3, T4, T5, T6, T7> che contengono dati sulla frequenza di variazione della popolazione tra il 1950 e il 2000 sono uguali.


using System;
using System.Collections;

public class RateComparer<T1, T2, T3, T4, T5, T6, T7> : IEqualityComparer
{
   private int argument = 0;

   public new bool Equals(object x, object y) 
   {
      argument++;
      if (argument == 1) return true;

      double fx, fy; 
      if (x is Double || x is Single)
      {
            fx = (double) x;
            fy = (double) y;
            return Math.Round(fx * 1000).Equals(Math.Round(fy * 1000));
      }
      else
      {
         return x.Equals(y);
      }
   }

   public int GetHashCode(object obj)
   {
      if (obj is Single || obj is Double)
         return Math.Round(((double) obj) * 1000).GetHashCode();
      else
         return obj.GetHashCode();
   }                
}

public class Example
{
   public static void Main()
   {
      var rate1 = Tuple.Create("New York", -.013934, .014505, 
                               -.1042733, .0354833, .093644, .0290792);
      var rate2 = Tuple.Create("Unknown City", -.013934, .014505, 
                               -.1042733, .0354833, .093644, .0290792);
      var rate3 = Tuple.Create("Unknown City", -.013934, .014505, 
                               -.1042733, .0354833, .093644, .029079);
      var rate4 = Tuple.Create("San Francisco", -.0451934, -.0332858, 
                               -.0512803, .0662544, .0728964, .0491912);
      IStructuralEquatable eq = rate1;
      // Compare first tuple with remaining two tuples.
      Console.WriteLine("{0} = ", rate1.ToString());
      Console.WriteLine("   {0} : {1}", rate2, 
                        eq.Equals(rate2, new RateComparer<string, double, double, double, double, double, double>()));
      Console.WriteLine("   {0} : {1}", rate3, 
                        eq.Equals(rate3, new RateComparer<string, double, double, double, double, double, double>()));
      Console.WriteLine("   {0} : {1}", rate4, 
                        eq.Equals(rate4, new RateComparer<string, double, double,double,  double, double, double>()));
   }
}
// The example displays the following output:
//    (New York, 0.014505, -0.1042733, 0.0354833, 0.093644, 0.0290792) =
//       (Unknown City, 0.014505, -0.1042733, 0.0354833, 0.093644, 0.0290792) : True
//       (Unknown City, 0.014505, -0.1042733, 0.0354833, 0.093644, 0.029079) : True
//       (San Francisco, -0.0332858, -0.0512803, 0.0662544, 0.0728964, 0.0491912) : False


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Supportato in: 4

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: 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 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft