같음 연산자
참고 항목
이 콘텐츠는 Pearson Education, Inc.의 허가를 받아 프레임워크 디자인 지침: 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용어 및 패턴, 2판에서 재인쇄되었습니다. 이 버전은 2008년에 출판되었으며 이후 3판에서 완전히 개정되었습니다. 이 페이지의 정보 중 일부는 최신 정보가 아닐 수 있습니다.
이 섹션에서는 같음 연산자 오버로드에 대해 설명하고 operator==
및 operator!=
를 같음 연산자로 참조합니다.
❌ 같음 연산자 중 하나를 오버로드하지 않고 다른 연산자를 오버로드하지 마세요.
✔️ Object.Equals 및 같음 연산자가 정확하게 동일한 의미 체계 및 유사한 성능 특성을 갖는지 확인하세요.
즉, 같음 연산자를 오버로드할 때 Object.Equals
를 재정의해야 함을 의미하는 경우가 많습니다.
❌ 같음 연산자에서 예외를 throw하면 안 됩니다.
예를 들어 인수 중 하나가 null인 경우 NullReferenceException
을 throw하는 대신 false를 반환합니다.
값 형식의 같음 연산자
✔️ 같음이 의미가 있는 경우 값 형식에서 같음 연산자를 오버로드하세요.
대부분의 프로그래밍 언어에는 값 형식에 대한 operator==
의 기본 구현이 없습니다.
참조 형식의 같음 연산자
❌ 변경 가능한 참조 형식에서 같음 연산자를 오버로드하면 안 됩니다.
많은 언어에는 참조 형식에 대한 기본 제공 같음 연산자가 있습니다. 기본 제공 연산자는 일반적으로 참조 같음을 구현하며, 기본 동작이 값 같음으로 변경될 때 많은 개발자가 놀랍니다.
불변성으로 인해 참조 같음과 값 같음 간의 차이를 알아차리기가 훨씬 더 어렵기 때문에 변경 불가능한 참조 형식에서는 이 문제가 완화됩니다.
❌ 구현 속도가 참조 같음의 구현보다 현저하게 느린 경우 참조 형식에서 같음 연산자를 오버로드하면 안 됩니다.
Portions © 2005, 2009 Microsoft Corporation. All rights reserved.
Pearson Education, Inc의 동의로 재인쇄. 출처: Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition 작성자: Krzysztof Cwalina 및 Brad Abrams, 출판 정보: Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.