ValueType.Equals(Object) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 인스턴스와 지정된 개체가 같은지 여부를 나타냅니다.
public:
override bool Equals(System::Object ^ obj);
public override bool Equals (object obj);
public override bool Equals (object? obj);
override this.Equals : obj -> bool
Public Overrides Function Equals (obj As Object) As Boolean
매개 변수
- obj
- Object
현재 인스턴스와 비교할 개체입니다.
반환
obj
이 인스턴스가 동일한 형식이고 동일한 값을 나타내는지 true
. 그렇지 않으면 false
.
예제
다음 예제에서는 파생된 값 형식에 의해 Equals 메서드를 재정의할 수 있는 방법을 보여 줍니다.
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
설명
ValueType.Equals(Object) 메서드는 Object.Equals(Object) 재정의하고 .NET의 모든 값 형식에 대한 값 같음의 기본 구현을 제공합니다.
기본 구현은 현재 인스턴스의 각 필드에 Object.Equals(Object) 호출하고 obj
모든 필드가 같으면 true
반환합니다.
.NET 9 이상에서는 InlineArrayAttribute 형식에 적용되는 경우 ValueType.Equals(Object) 기본 구현이 NotSupportedException throw합니다.
중요하다
특히 값 형식에 참조 형식인 필드가 포함된 경우 Equals(Object) 메서드를 재정의해야 합니다. 이렇게 하면 성능이 향상되고 형식에 대한 같음의 의미를 더 자세히 나타낼 수 있습니다.
Windows 런타임에 대한 참고 사항
Windows 런타임 구조에서 Equals 메서드를 호출할 때 Equals재정의하지 않는 값 형식에 대한 기본 동작을 제공합니다. 이는 .NET이 Windows 런타임에 대해 제공하는 지원의 일부입니다(Windows 스토어 앱 및 Windows 런타임
적용 대상
.NET