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

C#에서 튜플(Tuple) 요소의 유형을 확인하는 방법

C#에서 튜플(Tuple)의 요소 유형을 확인하려면 GetType() 메서드를 사용하면 됩니다. 이 메서드는 해당 객체의 정확한 런타임 타입 정보를 반환하며, 중첩된 튜플 구조까지 포함한 전체 제네릭 타입을 보여줍니다. 아래 예제를 통해 자세히 살펴보겠습니다.

예제 1: 중첩 튜플의 유형 확인

using System;
public class Demo {
   public static void Main(String[] args){
      var tuple1 = Tuple.Create(150, 1500, Tuple.Create(50, 100));
      var tuple2 = Tuple.Create(150, 1500, Tuple.Create(100, 200));
      Console.WriteLine("Is Tuple1 equal to Tuple2? = "+tuple1.Equals(tuple2));
      Console.WriteLine("HashCode of Tuple1 = "+tuple1.GetHashCode());
      Console.WriteLine("Type of Tuple1 = "+tuple1.GetType());
      Console.WriteLine("HashCode of Tuple2 = "+tuple2.GetHashCode());
      Console.WriteLine("Type of Tuple2 = "+tuple2.GetType());
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

Is Tuple1 equal to Tuple2? = False
HashCode of Tuple1 = 188892
Type of Tuple1 = System.Tuple`3[System.Int32,System.Int32,System.Tuple`2[System.Int32,System.Int32]]
HashCode of Tuple2 = 191462
Type of Tuple2 = System.Tuple`3[System.Int32,System.Int32,System.Tuple`2[System.Int32,System.Int32]]

출력 결과에서 볼 수 있듯이, 두 튜플은 내부 값이 일부 다르기 때문에 Equals() 비교 결과는 False입니다. 하지만 두 튜플 모두 동일한 구조, 즉 세 개의 요소를 가지며 그중 세 번째 요소가 다시 두 개의 int 값을 담는 중첩 튜플이므로, GetType()이 반환하는 유형은 서로 같습니다.

예제 2: 단순 2요소 튜플의 유형 확인

이번에는 중첩되지 않은 간단한 2요소 튜플을 사용한 예제를 살펴보겠습니다 −

using System;
public class Demo {
   public static void Main(String[] args){
      var tuple1 = Tuple.Create(10, 20);
      var tuple2 = Tuple.Create(30, 40);
      Console.WriteLine("Is Tuple1 equal to Tuple2? = "+tuple1.Equals(tuple2));
      Console.WriteLine("HashCode of Tuple1 = "+tuple1.GetHashCode());
      Console.WriteLine("Type of Tuple1 = "+tuple1.GetType());
      Console.WriteLine("HashCode of Tuple2 = "+tuple2.GetHashCode());
      Console.WriteLine("Type of Tuple2 = "+tuple2.GetType());
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

Is Tuple1 equal to Tuple2? = False
HashCode of Tuple1 = 350
Type of Tuple1 = System.Tuple`2[System.Int32,System.Int32]
HashCode of Tuple2 = 1014
Type of Tuple2 = System.Tuple`2[System.Int32,System.Int32]

정리

GetType() 메서드는 튜플에 저장된 실제 데이터 값과 무관하게, 튜플의 구조적 유형(요소 개수와 각 요소의 타입)을 반환합니다. 따라서 값이 달라도 구조가 동일한 튜플이라면 항상 같은 유형 문자열이 출력됩니다. 반면 GetHashCode()는 튜플에 담긴 실제 값을 기반으로 해시 코드를 생성하기 때문에, 값이 다른 튜플은 서로 다른 해시 코드를 가지게 됩니다.