ValueType.GetHashCode Método

Definición

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

Int32

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.

Se aplica a