ValueType.GetHashCode 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 인스턴스의 해시 코드를 반환합니다.
public:
override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer
반환
이 인스턴스의 해시 코드인 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();
}
}
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