ValueType.GetHashCode Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar hash-koden för den här instansen.
public:
override int GetHashCode();
public override int GetHashCode();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer
Returer
Ett 32-bitars signerat heltal som är hash-koden för den här instansen.
Exempel
I följande exempel visas hur GetHashCode metoden kan åsidosättas av en härledd värdetyp.
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
Kommentarer
Metoden GetHashCode gäller för typer som härletts från ValueType. Ett eller flera fält av den härledda typen används för att beräkna returvärdet. Om du anropar metoden för den härledda typen GetHashCode är returvärdet sannolikt inte lämpligt för användning som en nyckel i en hash-tabell. Om värdet för ett eller flera av dessa fält ändras kan returvärdet dessutom bli olämpligt för användning som en nyckel i en hash-tabell. I båda fallen bör du överväga att skriva en egen implementering av metoden GetHashCode som närmare representerar begreppet hash-kod för typen.
Mer information finns i Object.GetHashCode, och System.Collections.Hashtable.
.NET 9 och senare utlöser standardimplementeringen av ValueType.GetHashCodeNotSupportedException om InlineArrayAttribute tillämpas på typen.
Anteckningar för Windows Runtime
När du anropar metoden GetHashCode på en Windows Runtime struktur, tillhandahåller den standardbeteendet för värdetyper som inte åsidosätter GetHashCode. Detta är en del av det stöd som .NET tillhandahåller för Windows Runtime (se .NET-stöd för Windows Store-appar och Windows Runtime). Windows Runtime strukturer kan inte åsidosätta GetHashCode, även om de är skrivna med C# eller Visual Basic, eftersom de inte kan ha metoder. (Dessutom ärver inte strukturer i själva Windows Runtime ValueType.) De verkar dock ha ToString, Equals och GetHashCode metoder när du använder dem i C# eller Visual Basic-koden, och .NET tillhandahåller standardbeteendet för dessa metoder.