ValueType.GetHashCode Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve el código hash de esta instancia.
public:
override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer
Devoluciones
Entero de 32 bits con signo, que es el código hash de esta instancia.
Ejemplos
En el ejemplo siguiente se muestra cómo un tipo de valor GetHashCode derivado puede invalidar el método.
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();
}
}
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
Comentarios
El GetHashCode método se aplica a los tipos derivados de ValueType . Uno o varios campos del tipo derivado se usan para calcular el valor devuelto. Si llama al método del tipo derivado, es probable que el valor devuelto no sea adecuado para su uso como clave GetHashCode
en una tabla hash. Además, si cambia el valor de uno o varios de esos campos, es posible que el valor devuelto no sea adecuado para su uso como clave en una tabla hash. En cualquier caso, considere la posibilidad de escribir su propia implementación del método que represente más estrechamente el concepto de código GetHashCode hash para el tipo.
Para obtener más información, vea Object.GetHashCode y System.Collections.Hashtable.
Notas del entorno de Windows runtime
Cuando se llama al método en una estructura Windows Runtime, proporciona el comportamiento predeterminado para los tipos de valor que GetHashCode no invalidan GetHashCode . Esto forma parte de la compatibilidad que el .NET Framework proporciona para el entorno de ejecución de Windows (consulte Compatibilidad de .NET Framework con aplicaciones de Windows Store y Windows Runtime). Windows runtime no pueden invalidar , aunque se escriban con C# o Visual Basic, porque no GetHashCode pueden tener métodos. (Además, las estructuras del entorno Windows runtime no ValueType heredan). Sin embargo, parecen tener métodos , y cuando se usan en el código de C# o Visual Basic, y el .NET Framework proporciona el comportamiento predeterminado para ToString Equals estos GetHashCode métodos.