더북(TheBook)

하지만 실제로 그 길을 가기로 결정한다면 앞에서 본 코드처럼 그렇게 쉽지는 않을 것이다. 예를 들어 기본적으로 서로 다른 두 PostId 객체를 비교하는 것은 두 객체가 동일한 값을 가진다고 해도 클래스 내용이 아닌 참조만 비교하기 때문에 예상한 대로 동작하지 않는다(이 장 뒷부분에서 참조와 값에 대해 설명하겠다). 문제 없이 작동하려면 주위에 스캐폴딩(Scaffolding)(프로토타입이나 테스트용 코드)을 추가해야 한다. 다음은 기본 체크리스트이다.

일부 프레임워크 함수와 라이브러리가 클래스의 두 인스턴스를 비교하기 위해 Equals 메서드에 의존할 수 있으므로 Equals 메서드에 대한 오버라이드(override)를 구현해야 한다.

등호 연산자(== 혹은 !=)를 사용하여 값을 직접 비교하려는 경우에는 클래스에서 연산자 오버로드를 구현해야 한다.

Dictionary<K,V>의 클래스를 키로 사용하려면 GetHashCode 메서드를 오버라이드해야 한다. 이 장의 뒷부분에서 해싱과 딕셔너리의 관계에 대해 설명하겠다.

String.Format과 같은 문자열 형식의 지정 함수는 ToString 메서드를 사용하여 출력에 적합한 클래스의 문자열 표현을 얻는다.

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