IStructuralEquatable.Equals Methode (Object, IEqualityComparer)
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Tuple<T1, T2, T3, T4, T5, T6>.IStructuralEquatable.Equals-Methode (Object, IEqualityComparer)

.NET Framework (current version)
 

Gibt einen Wert zurück, der auf Grundlage einer angegebenen Vergleichsmethode angibt, ob das aktuelle Tuple<T1, T2, T3, T4, T5, T6>-Objekt gleich einem angegebenen Objekt ist.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

bool IStructuralEquatable.Equals(
	object other,
	IEqualityComparer comparer
)

Parameter

other

Das Objekt, das mit dieser Instanz verglichen werden soll.

comparer

Ein Objekt, das die Methode zum Überprüfen der beiden Objekte auf Gleichheit definiert.

Rückgabewert

Type: System.Boolean

true, wenn die aktuelle Instanz gleich dem angegebenen Objekt ist, andernfalls false.

Bei diesem Member handelt es sich um eine explizite Schnittstellenmemberimplementierung.Er kann nur verwendet werden, wenn die Tuple<T1, T2, T3, T4, T5, T6>-Instanz in eine IStructuralEquatable-Schnittstelle umgewandelt wird.

Die IEqualityComparer.Equals-Implementierung wird nur aufgerufen, wenn other nicht null ist, und wenn es erfolgreich in ein Tuple<T1, T2, T3, T4, T5, T6>-Objekt umgewandelt (in C#) oder konvertiert (in Visual Basic) werden kann, dessen Komponenten von den gleichen Typen wie in der aktuellen Instanz sind.Die IStructuralEquatable.Equals(Object, IEqualityComparer)-Methode übergibt zuerst die Item1-Werte der Tuple<T1, T2, T3, T4, T5, T6>-Objekte, die zur IEqualityComparer.Equals-Implementierung verglichen werden sollen.Wenn dieser Methodenaufruf true zurückgibt, wird die Methode wieder aufgerufen und ihr die Item2-Werte der zwei Tuple<T1, T2, T3, T4, T5, T6>-Objekte übergeben.Dies wird fortgesetzt, bis der Methodenaufruf false zurückgibt, wenn es ein bestimmtes Paar Item-Werte vergleicht, oder die zwei Item6-Werte werden an die Methode übergeben.

Im folgenden Beispiel wird eine RateComparer-Klasse definiert, die einen benutzerdefinierten Test auf Gleichheit ausführt.Wenn die Werte, die an die zugehörige IStructuralEquatable.Equals-Methode übergeben werden, vom Typ Single oder Double sind, testet die Methode nur mit bis zu drei Dezimalstellen auf Gleichheit.Ruft andernfalls einfach die Equals-Methode des x-Parameters auf.Im Beispiel wird diese IEqualityComparer-Implementierung verwendet, um zu bestimmen, ob vier Tuple<T1, T2, T3, T4, T5, T6>-Objekte, die Daten zur Rate der Bevölkerungsänderung zwischen 1960 und 2000 enthalten, gleich sind.

using System;
using System.Collections;

public class RateComparer<T1, T2, T3, T4, T5, T6> : 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", .014505, -.1042733, 
                               .0354833, .093644, .0290792);
      var rate2 = Tuple.Create("Unknown City", .014505, -.1042733, 
                               .0354833, .093644, .0290792);
      var rate3 = Tuple.Create("Unknown City", .014505, -.1042733, 
                               .0354833, .093644, .029079);
      var rate4 = Tuple.Create("San Francisco", -.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>()));
      Console.WriteLine("   {0} : {1}", rate3, 
                        eq.Equals(rate3, new RateComparer<string, double, double, double, double, double>()));
      Console.WriteLine("   {0} : {1}", rate4, 
                        eq.Equals(rate4, new RateComparer<string, 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

Universal Windows Platform
Verfügbar seit 4.5
.NET Framework
Verfügbar seit 4.0
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 4.0
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen:
© 2016 Microsoft