Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Type.Equals() 메서드 완벽 정리 – 사용법과 예제 코드

C#의 Type.Equals() 메서드는 현재 Type 객체의 기본 시스템 타입이 지정된 Object 또는 다른 Type의 기본 시스템 타입과 동일한지 여부를 판별하는 데 사용됩니다. 즉, 두 타입이 실제로 같은 런타임 타입을 나타내는지 비교할 때 유용합니다.

문법(Syntax)

public virtual bool Equals(Type o);
public override bool Equals(object o);

위 문법에서 매개변수 o는 현재 Type의 기본 시스템 타입과 비교할 대상 객체입니다.

예제 1: 서로 다른 타입 비교

먼저 두 개의 서로 다른 타입을 비교하는 간단한 예제를 살펴보겠습니다.

using System;
public class Demo {
    public static void Main(string[] args) {
        Type val1 = typeof(System.UInt16);
        Type val2 = typeof(System.Int32);
        Console.WriteLine("두 타입이 동일합니까? " + val1.Equals(val2));
    }
}

출력 결과

두 타입이 동일합니까? False

UInt16Int32는 서로 다른 시스템 타입이므로 Equals() 메서드는 False를 반환합니다.

예제 2: 리플렉션을 활용한 타입 비교

이번에는 System.Reflection 네임스페이스의 GetTypeInfo() 메서드를 사용하여 같은 타입을 비교하는 예제를 살펴보겠습니다.

using System;
using System.Reflection;
public class Demo {
    public static void Main(string[] args) {
        Type type = typeof(String);
        Object obj = typeof(String).GetTypeInfo();
        Type type2 = obj as Type;
        if (type2 != null)
            Console.WriteLine("두 타입이 동일합니까? " + type.Equals(type2));
        else
            Console.WriteLine("캐스팅할 수 없습니다!");
    }
}

출력 결과

두 타입이 동일합니까? True

typeof(String)으로 얻은 타입과 리플렉션을 통해 변환한 타입은 본질적으로 동일한 시스템 타입을 나타내므로 True가 반환됩니다.

정리

  • Type.Equals() 메서드는 두 타입의 기본 시스템 타입이 같은지 비교합니다.
  • 타입이 다르면 false, 동일하면 true를 반환합니다.
  • 리플렉션으로 얻은 Type 객체와 직접 비교할 수 있어 런타임 타입 검증에 유용합니다.