다음을 통해 공유


같음 연산자

참고 항목

이 콘텐츠는 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.

참고 항목