ValueType.GetHashCode 메서드

정의

이 인스턴스의 해시 코드를 반환합니다.

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

반환

Int32

이 인스턴스의 해시 코드인 32비트 부호 있는 정수입니다.

예제

다음 예제에서는 방법을 GetHashCode 메서드를 파생된 값 형식으로 재정의할 수 있습니다.

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

설명

GetHashCode메서드는 에서 파생된 형식에 ValueType 적용됩니다. 파생 형식의 하나 이상의 필드를 사용하여 반환 값을 계산합니다. 파생 형식의 메서드를 호출하는 경우 GetHashCode 반환 값은 해시 테이블에서 키로 사용하기에 적합하지 않을 수 있습니다. 또한 이러한 필드 중 하나 이상의 값이 변경되면 반환 값이 해시 테이블에서 키로 사용하기에 적합하지 않을 수 있습니다. 두 경우 모두 GetHashCode 형식에 대한 해시 코드의 개념을 보다 자세히 나타내는 메서드의 고유한 구현을 작성하는 것이 좋습니다.

자세한 내용은 Object.GetHashCodeSystem.Collections.Hashtable을 참조하십시오.

Windows 런타임에 대한 참고 사항

GetHashCodeWindows 런타임 구조에서 메서드를 호출하면 재정의하지 않는 값 형식에 대한 기본 동작이 GetHashCode 제공됩니다. 이는 .NET Framework Windows 런타임에 대해 제공하는 지원의 일부입니다(Windows 스토어 앱 및 Windows 런타임에 대한 .NET Framework 지원참조). Windows 런타임 구조는 GetHashCode C# 또는 Visual Basic 작성되더라도 메서드를 사용할 수 없으므로 를 재정의할 수 없습니다. 또한 Windows 런타임 자체의 구조체는 를 상속하지 않습니다. ValueType 그러나 C# 또는 Visual Basic 코드에서 사용할 때 , 및 메서드가 있는 것처럼 보이고 ToString Equals .NET Framework 이러한 GetHashCode 메서드에 대한 기본 동작을 제공합니다.

적용 대상