C#에서 두 개의 Tuple(튜플) 객체가 서로 동일한지 확인하려면 Equals() 메서드를 사용하면 됩니다. 이 메서드는 두 튜플의 모든 요소를 순서대로 비교하여 값과 자료형이 모두 일치하면 True를, 하나라도 다르면 False를 반환합니다.
예제 1: 기본적인 튜플 비교
다음은 두 개의 7요소 튜플을 생성하고 서로 같은지 비교하는 예제입니다.
using System;
public class Demo {
public static void Main(String[] args){
var tuple1 = Tuple.Create(150, 400, 500, 700, 100, 1200, 1500);
var tuple2 = Tuple.Create(150, 400, 500, 700, 100, 1200, 1500);
Console.WriteLine("Tuple1이 Tuple2와 같은가? = " + tuple1.Equals(tuple2));
}
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Tuple1이 Tuple2와 같은가? = True
두 튜플의 모든 요소(150, 400, 500, 700, 100, 1200, 1500)가 순서와 값 모두 완전히 일치하기 때문에 Equals() 메서드는 True를 반환했습니다.
예제 2: 중첩된 튜플 비교
이번에는 내부에 또 다른 튜플을 포함하는 중첩 튜플을 비교해 보겠습니다.
using System;
public class Demo {
public static void Main(String[] args){
var tuple1 = Tuple.Create(150, 400, 500, 700, 100, 1200, 1500, Tuple.Create(50, 100));
var tuple2 = Tuple.Create(150, 400, 500, 700, 100, 1200, 1500, Tuple.Create(100, 200));
Console.WriteLine("Tuple1이 Tuple2와 같은가? = " + tuple1.Equals(tuple2));
}
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Tuple1이 Tuple2와 같은가? = False
앞의 7개 요소는 두 튜플에서 동일하지만, 여덟 번째 요소인 중첩 튜플이 서로 다릅니다. 첫 번째 튜플은 (50, 100)을, 두 번째 튜플은 (100, 200)을 포함하고 있기 때문에 전체 비교 결과는 False가 됩니다.
정리
Equals() 메서드는 단순히 참조(reference)만 비교하는 것이 아니라, 튜플의 각 요소 값을 재귀적으로 비교합니다. 따라서 중첩된 튜플이 포함된 경우에도 내부 요소까지 꼼꼼하게 검사하며, 하나라도 불일치하는 요소가 있으면 False를 반환한다는 점을 기억하시기 바랍니다.