Distinct()를 호출하는 것은 출력 결과에서 (2,1)을 한 번만 포함시키겠다는 의미다. 그리고 동일성 비교는 튜플의 개별 요소 단위로 이루어지므로 (2,1)은 (1,2)와 다르다.

    순차성 비교에서는 튜플 내의 첫 번째 요소가 가장 중요하기 때문에 컬렉션 내의 좌표들은 x 축을 기준으로 정렬된다. x 좌표가 동일한 경우에만 y 좌표를 추가로 살펴볼 것이다. 그래서 출력 결과는 다음과 같다.

    5 distinct points
    Points in order:
    (-1, 5)
    (1, 1)
    (1, 2)
    (2, 1)
    (10, 3)

    튜플을 비교할 때 비교 방법을 따로 지정할 수는 없지만, 사용하려는 튜플 타입에 대해 IEqualityComparer<T>IComparer<T> 인터페이스를 사용자가 직접 구현하면 비교 방법을 임의로 변경할 수 있다. 하지만 그 이전에 어떤 데이터를 표현하기 위해서 튜플 대신 완전히 독립적인 사용자 정의 타입을 구현하는 것이 충분한 가치가 있는 일인지 고민해 볼 필요가 있다. 몇몇 경우에는 그저 구조를 비교하는 것만으로도 충분하다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.