ValueType.GetHashCode Methode

Definition

Gibt den Hashcode für diese Instanz zurück.

public:
 override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer

Gibt zurück

Int32

Eine 32-Bit-Ganzzahl mit Vorzeichen. Diese ist der Hashcode für die Instanz.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie GetHashCode die -Methode von einem abgeleiteten Werttyp überschrieben werden kann.

public ref struct Complex
{
public:
   double m_Re;
   double m_Im;
   virtual bool Equals( Object^ ob ) override
   {
      if ( dynamic_cast<Complex^>(ob) )
      {
         Complex^ c = dynamic_cast<Complex^>(ob);
         return m_Re == c->m_Re && m_Im == c->m_Im;
      }
      else
      {
         return false;
      }
   }

   virtual int GetHashCode() override
   {
      return m_Re.GetHashCode() ^ m_Im.GetHashCode();
   }
};
public struct Complex
{
    public double m_Re;
    public double m_Im;

    public override bool Equals( object ob ){
        if( ob is Complex ) {
            Complex c = (Complex) ob;
            return m_Re==c.m_Re && m_Im==c.m_Im;
        }
        else {
            return false;
        }
    }

    public override int GetHashCode(){
        return m_Re.GetHashCode() ^ m_Im.GetHashCode();
    }
}
Public Structure Complex
   Private m_Re As Double
   Private m_Im As Double
       
   Public Overloads Function Equals(ob As Object) As Boolean
      If TypeOf ob Is Complex Then
         Dim c As Complex = CType(ob, Complex)
         Return m_Re = c.m_Re And m_Im = c.m_Im
      Else
         Return False
      End If
   End Function
   
   
   Public Overloads Function GetHashCode() As Integer
      Return m_Re.GetHashCode() ^ m_Im.GetHashCode()
   End Function

End Structure

Hinweise

Die GetHashCode -Methode gilt für von abgeleitete ValueType Typen. Mindestens ein Feld des abgeleiteten Typs wird verwendet, um den Rückgabewert zu berechnen. Wenn Sie die -Methode des abgeleiteten Typs aufrufen, ist der Rückgabewert wahrscheinlich nicht für die Verwendung als Schlüssel GetHashCode in einer Hashtabelle geeignet. Wenn sich darüber hinaus der Wert eines oder mehrere dieser Felder ändert, kann der Rückgabewert möglicherweise nicht mehr als Schlüssel in einer Hashtabelle verwendet werden. Erwägen Sie in beiden Fällen, eine eigene Implementierung der -Methode zu schreiben, die das Konzept eines Hashcodes für GetHashCode den Typ genauer darstellt.

Weitere Informationen finden Sie unter Object.GetHashCode und System.Collections.Hashtable.

Hinweise für die Windows Runtime

Wenn Sie die -Methode für eine Windows Runtime-Struktur aufrufen, wird das Standardverhalten für Werttypen GetHashCode bereitgestellt, die nicht überschreiben. GetHashCode Dies ist Teil der Unterstützung, die .NET Framework für die Windows Runtime bietet (siehe .NET Framework-Unterstützung für Windows Store-Appsund Windows Runtime). Windows Runtime-Strukturen können nicht überschreiben, auch wenn sie mit C# oder Visual Basic geschrieben wurden, da sie keine GetHashCode Methoden haben können. (Darüber hinaus erben Strukturen in der Windows Runtime selbst nicht ValueType .) Sie scheinen jedoch über die Methoden , und zu verfügen, wenn Sie sie ToString Equals in Ihrem C#- oder Visual Basic-Code verwenden, und die .NET Framework stellt das Standardverhalten für diese GetHashCode Methoden zur Anwendung.

Gilt für