Auf Englisch lesen

Freigeben über


ValueType.GetHashCode Methode

Definition

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

C#
public override int GetHashCode();

Gibt zurück

Eine 32-Bit-Ganzzahl, die den Hashcode für diese Instanz darstellt.

Beispiele

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

C#
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();
    }
}

Hinweise

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

Weitere Informationen finden Sie unter Object.GetHashCodeund System.Collections.Hashtable.

.NET 9 und höher löst die Standardimplementierung von ValueType.GetHashCodeNotSupportedException aus, wenn InlineArrayAttribute auf den Typ angewendet wird.

Hinweise für die Windows-Runtime

Wenn Sie die GetHashCode-Methode für eine Windows-Runtime-Struktur aufrufen, stellt sie das Standardverhalten für Werttypen bereit, die GetHashCodenicht außer Kraft setzen. Dies ist Teil der Unterstützung, die .NET für die Windows-Runtime bereitstellt (siehe .NET-Support für Windows Store-Apps und Windows-Runtime-). Windows-Runtime-Strukturen können GetHashCodenicht außer Kraft setzen, auch wenn sie mit C# oder Visual Basic geschrieben wurden, da sie keine Methoden haben können. (Darüber hinaus erben Strukturen in der Windows-Runtime selbst nicht ValueType.) Sie scheinen jedoch ToString, Equalsund GetHashCode Methoden zu haben, wenn Sie sie in Ihrem C#- oder Visual Basic-Code verwenden, und .NET stellt das Standardverhalten für diese Methoden bereit.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0