집합은 고유한 값들의 컬렉션이에요. .NET에서 집합의 기본 구현은 HashSet<T> 클래스예요.
HashSet 클래스는 각 원소의 GetHashCode() 메서드를 사용해요.
기본적으로 참조 형식의 GetHashCode() 구현은 메모리 위치의 해시를 반환해요. 그래서 서로 다른 참조 형식 객체는 서로 다른 해시 코드를 가져요(이를 참조 동등성이라고 해요). 값 형식은 기본적으로 자신의 필드나 속성의 해시를 반환해요. 그래서 필드나 속성 값이 같은 서로 다른 값 형식 객체는 같은 해시 코드를 가져요(이를 구조적 동등성이라고 해요).
직접 만든 클래스에서 GetHashCode() 구현을 재정의할 수도 있어요. 이렇게 하면 참조 형식이 구조적 동등성을 갖도록 만들 수 있어요.