다음을 통해 공유


Equals 및 같음 연산자(==) 구현 지침

다음 규칙은 Equals 메서드와 같음 연산자(==)를 구현하기 위한 지침을 요약한 것입니다.

  • Equals 메서드를 구현할 때마다 GetHashCode 메서드를 구현합니다. 이렇게 하면 EqualsGetHashCode가 동기화됩니다.

  • 같음 연산자(==)를 구현할 때마다 Equals 메서드를 재정의하고 같은 동작을 수행하도록 만듭니다. 이렇게 하면 Equals 메서드를 사용하는 HashtableArrayList 등의 인프라 코드가 같은 연산자를 사용하여 작성된 사용자 코드와 같은 방식으로 동작하게 됩니다.

  • IComparable을 구현할 때마다 Equals 메서드를 재정의합니다.

  • IComparable을 구현할 때는 같음(==), 같지 않음(!=), 보다 작음(<) 및 보다 큼(>) 연산자에 대한 연산자 오버로드를 구현할 수 있습니다.

  • Equals 또는 GetHashCode 메서드나 같음 연산자(==)에서 예외를 throw하지 않습니다.

Equals 메서드에 대한 관련 내용은 Equals 메서드 구현을 참조하십시오.

값 형식에 같음 연산자(==) 구현

대부분의 프로그래밍 언어에서는 값 형식에 대해 기본 구현된 같음 연산자(==)가 없습니다. 따라서 같음이 의미가 있을 때마다 같음 연산자(==)를 오버로드해야 합니다.

값 형식에 대해서는 Equals 메서드의 구현을 고려해야 합니다. 이것은 System.ValueType에 대한 기본 구현과 사용자 지정 구현에서는 이를 구현하지 않기 때문입니다.

Equals 메서드를 재정의할 때마다 같음 연산자(==)를 구현합니다.

참조 형식에 같음 연산자(==) 구현

대부분의 언어에서는 참조 형식에 대해 기본 구현된 같음 연산자(==)를 제공하지 않습니다. 따라서 참조 형식에 대해 같음 연산자(==)를 구현할 때는 주의해야 합니다. Equals 메서드를 구현하는 참조 형식을 포함한 대부분의 참조 형식은 같음 연산자(==)를 재정의해서는 안 됩니다.

해당 형식이 Point, String, BigNumber 등과 같은 기본 형식인 경우 같음 연산자(==)를 재정의합니다. 더하기(+) 및 빼기(-) 연산자를 오버로드할 때는 항상 같음 연산자(==)도 오버로드해야 합니다.

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.

참고 항목

참조

Equals 메서드 구현

Object.Equals

개념

사용 지침

기타 리소스

클래스 라이브러리 개발을 위한 디자인 지침