(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Tuple<T1, T2, T3, T4, T5, T6>.IStructuralEquatable.Equals-Methode

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
Typ: System.Object
Das Objekt, das mit dieser Instanz verglichen werden soll.
comparer
Typ: System.Collections.IEqualityComparer
Ein Objekt, das die Methode zum Überprüfen der beiden Objekte auf Gleichheit definiert.

Rückgabewert

Typ: System.Boolean
true , wenn die aktuelle Instanz gleich dem angegebenen Objekt ist, andernfalls false.

Implementiert

IStructuralEquatable.Equals(Object, IEqualityComparer)

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


.NET Framework

Unterstützt in: 4.5, 4

.NET Framework Client Profile

Unterstützt in: 4

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.