비고
이 콘텐츠는 프레임워크 디자인 지침: 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용구 및 패턴, 2판에서 Pearson Education, Inc.의 권한으로 다시 인쇄됩니다. 이 버전은 2008년에 출판되었으며, 이후 세 번째 에디션에서 완전히 수정되었습니다. 이 페이지의 일부 정보는 오래된 것일 수 있습니다.
이 섹션에서는 동등 연산자 오버로딩에 대해 설명하고 operator==
및 operator!=
을 동등 연산자로 참조합니다.
❌ 동등 연산자 중 하나만 오버로드하는 일을 삼가세요.
✔️ Object.Equals와 같음 연산자가 정확히 동일한 의미 체계와 유사한 성능 특성을 가지도록 해야 합니다.
즉, Object.Equals
같음 연산자가 오버로드될 때 재정의되어야 하는 경우가 많습니다.
❌ 동등 연산자에서 예외를 발생시키지 마세요.
예를 들어, 인수 중 하나가 null일 경우 NullReferenceException
을(를) throw하는 대신 false를 반환합니다.
값 형식의 같음 연산자
✔️ 같음이 의미 있는 경우 값 형식에 대해 같음 연산자를 오버로드합니다.
대부분의 프로그래밍 언어에서는 값 형식에 operator==
대한 기본 구현이 없습니다.
참조 형식의 같음 연산자
❌ 변경 가능한 참조 형식에서 같음 연산자를 오버로드하지 않습니다.
많은 언어에는 참조 형식에 대한 기본 제공 같음 연산자가 있습니다. 기본 제공 연산자는 일반적으로 참조 같음을 구현하며, 기본 동작이 값 같음으로 변경되면 많은 개발자가 놀랍습니다.
불변성으로 인해 참조 같음과 값 같음의 차이를 인식하기가 훨씬 어려워지므로 변경할 수 없는 참조 형식에 대해 이 문제가 완화됩니다.
❌ 구현이 참조 같음보다 훨씬 느린 경우 참조 형식에서 같음 연산자를 오버로드하지 마십시오.
Microsoft Corporation의 일부 저작권 2005, 2009. 모든 권리 보유.
프레임워크 디자인 지침에서 Pearson Education, Inc.의 권한으로 재인쇄 : 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용구 및 패턴, Krzysztof Cwalina 및 Brad Abrams의 제2판, Microsoft Windows 개발 시리즈의 일환으로 Addison-Wesley Professional이 2008년 10월 22일 출판했습니다.