ValueType.GetHashCode Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
Eine 32-Bit-Ganzzahl mit Vorzeichen. Diese ist der Hashcode für die Instanz.
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie die GetHashCode 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();
}
}
type Complex() =
member val m_Re = 0. with get, set
member val m_Im = 0. with get, set
override this.Equals(ob) =
match ob with
| :? Complex as c ->
this.m_Re = c.m_Re && this.m_Im = c.m_Im
| _ -> false
override this.GetHashCode() =
this.m_Re.GetHashCode() ^^^ this.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 Typen, die von ValueTypeabgeleitet werden. Mindestens ein Feld des abgeleiteten Typs wird verwendet, um den Rückgabewert zu berechnen. Wenn Sie die Methode des abgeleiteten Typs GetHashCode
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, kann der Rückgabewert außerdem für die Verwendung als Schlüssel in einer Hashtabelle ungeeignet sein. In beiden Fällen sollten Sie eine eigene Implementierung der Methode schreiben, die GetHashCode das Konzept eines Hashcodes für den Typ näher darstellt.
Weitere Informationen finden Sie unter Object.GetHashCode und System.Collections.Hashtable.
Hinweise zum Windows-Runtime
Wenn Sie die GetHashCode -Methode für eine Windows-Runtime-Struktur aufrufen, stellt sie das Standardverhalten für Werttypen bereit, die nicht außer Kraft setzenGetHashCode. Dies ist Teil der Unterstützung, die .NET für die Windows-Runtime bereitstellt (siehe .NET-Unterstützung für Windows Store-Apps und Windows-Runtime). Windows-Runtime Strukturen können nicht außer Kraft gesetzt GetHashCodewerden, auch wenn sie mit C# oder Visual Basic geschrieben werden, da sie keine Methoden haben können. (Außerdem erben ValueTypeStrukturen im Windows-Runtime selbst nicht .) Sie scheinen jedoch Methoden Equals, und GetHashCode zu habenToString, wenn Sie sie in Ihrem C#- oder Visual Basic-Code verwenden, und .NET stellt das Standardverhalten für diese Methoden bereit.
Gilt für:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für