ValueType.GetHashCode Método

Definição

Devolve o código de hash para esta instância.

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

Devoluções

Um inteiro assinado de 32 bits que é o código hash para esta instância.

Exemplos

O exemplo seguinte demonstra como o GetHashCode método pode ser sobreposto por um tipo de valor derivado.

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

Observações

O GetHashCode método aplica-se a tipos derivados de ValueType. Um ou mais campos do tipo derivado são usados para calcular o valor de retorno. Se chamar o método do GetHashCode tipo derivado, o valor de retorno provavelmente não será adequado para ser usado como chave numa tabela hash. Além disso, se o valor de um ou mais desses campos mudar, o valor de retorno pode tornar-se inadequado para ser usado como chave numa tabela hash. Em qualquer dos casos, considere escrever a sua própria implementação do GetHashCode método que represente mais de perto o conceito de código hash para o tipo.

Para mais informações, veja Object.GetHashCode, e System.Collections.Hashtable.

.NET 9 e posteriores, a implementação padrão de ValueType.GetHashCode lança NotSupportedException se for aplicado InlineArrayAttribute ao tipo.

Notas para o Tempo de Execução do Windows

Quando chamas o método GetHashCode numa estrutura Windows Runtime, ele fornece o comportamento padrão para tipos de valor que não sobrescrevem GetHashCode. Isso faz parte do suporte que o .NET fornece para o Windows Runtime (consulte Suporte do .NET para aplicações da Windows Store epara o Windows Runtime). Windows Runtime estruturas não podem sobrescrever GetHashCode, mesmo que sejam escritas com C# ou Visual Basic, porque não podem ter métodos. (Além disso, as estruturas no próprio Windows Runtime não herdam ValueType.) No entanto, parecem ter métodos ToString, Equals e GetHashCode quando os usa no seu código C# ou Visual Basic, e .NET fornece o comportamento padrão para esses métodos.

Aplica-se a