다음을 통해 공유


ValueType.GetHashCode 메서드

해당 인스턴스에 대한 해시 코드를 반환합니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Public Overrides Function GetHashCode As Integer
‘사용 방법
Dim instance As ValueType
Dim returnValue As Integer

returnValue = instance.GetHashCode
public override int GetHashCode ()
public:
virtual int GetHashCode () override
public int GetHashCode ()
public override function GetHashCode () : int

반환 값

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

설명

GetHashCode 메서드는 ValueType에서 파생된 형식에 적용됩니다. 파생된 형식의 필드는 반환 값을 계산하는 데 사용됩니다. 파생된 형식의 GetHashCode 메서드를 호출하면 반환 값은 해시 테이블에서 키로 사용하기에 적합하지 않을 수 있습니다. 또한 이러한 하나 이상의 필드 값이 변경되면 반환 값은 해시 테이블에서 키로 사용하기에 적합하지 않을 수 있습니다. 이런 경우, 해당 형식에 대한 해시 코드의 개념을 더욱 자세히 나타내는 GetHashCode 메서드를 직접 구현할 수 있습니다.

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

예제

다음 예제에서는 파생된 값 형식이 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
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 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 class Complex
{
    public double mRe;
    public double mIm;

    public boolean Equals(Object ob)
    {
        if (ob instanceof Complex) {
            Complex c = (Complex)ob;
            return mRe == c.mRe && mIm == c.mIm;
        }
        else {
            return false;
        }
    } //Equals

    public int GetHashCode()
    {
        return ((System.Double)mRe).GetHashCode() ^ ((System.Double)mIm).
            GetHashCode();
    } //GetHashCode
} //Complex
public class Complex 
{
    public var m_Re : double;
    public var m_Im : double;

    public override function Equals( ob ) : Boolean{
        if( ob.GetType() == Complex ) {
            var c : Complex = Complex(ob);
            return m_Re==c.m_Re && m_Im==c.m_Im;
        }
        else {
            return false;
        }
    }

    public override function GetHashCode() : int{
        return m_Re.GetHashCode() ^ m_Im.GetHashCode();
    }
            
            public static function main() {
                   var x : Complex = new Complex();
                   x.m_Re = 1;
                   x.m_Im = 2;
                   var y : Complex = new Complex();
                   y.m_Re = 2;
                   y.m_Im = 1;
                   
                   Console.Write(x.Equals(y));                       
            }
}

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

ValueType 클래스
ValueType 멤버
System 네임스페이스