2015. 7. 4. 11:24ㆍProgramming/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 |
---|