Equals, == 연산자 재정의 참고

2015. 7. 4. 11:24Programming/Csharp

https://msdn.microsoft.com/ko-kr/library/ms173147(v=vs.90).aspx


우선 Equals의 일치 비교는 값 비교이며

참조 일치의 비교는 ReferenceEquals임을 알고 있어야 한다.



@@ MSDN____

Equals의 새 구현은 Equals의 모든 규칙을 따라야 합니다.

  • x.Equals(x)는 true를 반환합니다.

  • x. Equals (y)와 y. Equals (x)의 반환 값은 같습니다.

  • (x. Equals (y) && y. Equals (z))가 true를 반환하는 경우 x. Equals (z)도 true를 반환합니다.

  • x 및 y가 참조하는 개체가 수정되지 않는 한 x. Equals (y)를 계속 호출해도 같은 값이 반환됩니다.

  • x. Equals (null)은 false를 반환합니다. 이는 nullable이 아닌 값에만 해당합니다. 자세한 내용은 nullable 형식(C# 프로그래밍 가이드)을 참조하십시오.

Equals의 새 구현은 예외를 throw하지 말아야 합니다


== 연산자는 참조 일치 비교를 수행하므로 반드시 재정의할 필요는 없다.

@@ MSDN___

== 연산자를 오버로드할 때는 참조 일치를 검사하기 위해 (a == b)(a == null) 또는 (b == null)을 사용하는 잘못을 범하기 쉽습니다. 이렇게 하면 오버로드된 == 연산자를 대신 호출하여 무한 루프가 발생합니다. 무한 루프를 방지하려면 ReferenceEquals를 사용하거나 형식을 Object로 캐스팅해야 합니다

'Programming > Csharp' 카테고리의 다른 글

Stroke, StrokePreserve 차이점  (0) 2015.07.04