ValueType.GetHashCode Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.