나는 ==
및 !=
연산자를 오버로드하는 클래스를 구현했습니다.우선 순위 연산자 우선 순위
이것은 제대로 작동하는 것 같습니다. 그러나, 나는 'type' defines operator == or operator != but does not override Object.Equals(object o)
경고를 얻는다.
좋아요, 그래서 Equals를 구현했습니다. 하지만 이제는 경고 'type' defines operator == or operator != but does not override Object.GetHashCode()
이 나옵니다.
어떤 시점에서 종료됩니까? 아니면 ==
과 !=
을 오버로드하려고하기 때문에 끊임없이 요구되는 길을 걸어 왔습니까?
빠른 용어 수정 : * 연산자를 재정의하지 마십시오. * 오버로드 *합니다. –
'Equals'을 오버라이드 (override) 할 때, 해시 함수를 기반으로 동등성을 검사하므로'GetHashCode'도 오버라이드해야합니다. –
@IgorisAzanovas 아니요, Equals는 해시 함수를 기반으로 평등을 검사하지 않습니다 (과부하가 발생하지 않는 한 특별히 코드를 작성하지 않는 한). 해시 함수는 해시 된 콜렉션을 지원하기 위해 존재하며 고유 값을 생성 할 필요는 없으며, 자주 사용되지 않는 것이 이상적입니다. – Suncat2000