영어로 읽기

다음을 통해 공유


ValueType.Equals(Object) 메서드

정의

이 인스턴스와 지정된 개체가 같은지 여부를 나타냅니다.

public override bool Equals(object obj);
public override bool Equals(object? obj);

매개 변수

obj
Object

현재 인스턴스와 비교할 개체입니다.

반환

obj 이 인스턴스가 동일한 형식이고 동일한 값을 나타내는지 true. 그렇지 않으면 false.

예제

다음 예제에서는 파생된 값 형식에 의해 Equals 메서드를 재정의할 수 있는 방법을 보여 줍니다.

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();
    }
}

설명

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 지원 참조). Windows 런타임 구조는 C# 또는 Visual Basic으로 작성된 경우에도 메서드를 사용할 수 없으므로 Equals재정의할 수 없습니다. 또한 Windows 런타임 자체의 구조체는 ValueType상속하지 않습니다. 그러나 C# 또는 Visual Basic 코드에서 사용할 때 ToString, EqualsGetHashCode 메서드가 있는 것처럼 보이며 .NET은 이러한 메서드에 대한 기본 동작을 제공합니다.

적용 대상

제품 버전
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0