하지만 실제로 그 길을 가기로 결정한다면 앞에서 본 코드처럼 그렇게 쉽지는 않을 것이다. 예를 들어 기본적으로 서로 다른 두 PostId 객체를 비교하는 것은 두 객체가 동일한 값을 가진다고 해도 클래스 내용이 아닌 참조만 비교하기 때문에 예상한 대로 동작하지 않는다(이 장 뒷부분에서 참조와 값에 대해 설명하겠다). 문제 없이 작동하려면 주위에 스캐폴딩(Scaffolding)(프로토타입이나 테스트용 코드)을 추가해야 한다. 다음은 기본 체크리스트이다.
• 일부 프레임워크 함수와 라이브러리가 클래스의 두 인스턴스를 비교하기 위해 Equals 메서드에 의존할 수 있으므로 Equals 메서드에 대한 오버라이드(override)를 구현해야 한다.
• 등호 연산자(== 혹은 !=)를 사용하여 값을 직접 비교하려는 경우에는 클래스에서 연산자 오버로드를 구현해야 한다.
• Dictionary<K,V>의 클래스를 키로 사용하려면 GetHashCode 메서드를 오버라이드해야 한다. 이 장의 뒷부분에서 해싱과 딕셔너리의 관계에 대해 설명하겠다.
• String.Format과 같은 문자열 형식의 지정 함수는 ToString 메서드를 사용하여 출력에 적합한 클래스의 문자열 표현을 얻는다.