연산자에 과부하가 걸린 후 ==, 두 변수가 동일한 개체를 가리키면 어떻게 비교 하는가?
-
03-07-2019 - |
문제
비교 연산자 과부하, 두 변수가 동일한 객체를 가리키는 경우 비교하는 방법 (즉, 값이 아닌)
public static bool operator ==(Landscape a, Landscape b)
{
return a.Width == b.Width && a.Height == b.Height;
}
public static bool operator !=(Landscape a, Landscape b)
{
return !(a.Width == b.Width && a.Height == b.Height);
}
해결책
객체를 사용하십시오.
물론, == 및! = 메소드가 전체 기능을 유지하려면 발신자에게 일관된 응답 세트를 반환 할 수 있도록 평등과 gethashcode를 재정의해야합니다.
다른 팁
두 가지가 동일한 객체를 가리키는 지 확인합니다. 객체를 사용해야합니다. 둘 다 동일하거나 둘 다 NULL 인 경우 TRUE가 반환됩니다. 그렇지 않으면 거짓을 반환합니다
나는 그것의 오래된 질문을 알고 있지만 == 또는 Object.equals 메소드를 과부하하려면 리버스 연산자에게 과부하를 걸어야합니다! =.
이 경우 내부 번호를 비교하기 때문에 다른 비교 연산자 <,>, <=,> =를 과부하시켜야합니다.
타사 소비자이든, 코드를 인수하는 개발자이든 미래에 수업을 소비하는 사람들은 코드 러쉬 또는 리팩터와 같은 것을 사용할 수 있습니다. 그런 다음 25 개의 중첩 IF 's 증후군에서 벗어나기 위해 평평하게하십시오. 코드가 그렇게하고! = 연산자를 과부하시키지 않고 == 연산자를 과부하 시키면 코드의 의도 된 의미를 변경할 수 있습니다.
제휴하지 않습니다 StackOverflow