ValueType.GetHashCode Metod

Definition

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.

Gäller för