ValueType.GetHashCode 메서드

정의

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

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

반품

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

예제

다음 예제에서는 파생된 값 형식으로 메서드를 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();
    }
}
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

설명

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

자세한 내용은 다음을 참조 Object.GetHashCode하세요 System.Collections.Hashtable.

.NET 9 이상에서는 InlineArrayAttribute 형식에 적용되는 경우 ValueType.GetHashCode 기본 구현은 NotSupportedException throw합니다.

Windows 런타임에 대한 참고 사항

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

적용 대상