연산자에 과부하가 걸린 후 ==, 두 변수가 동일한 개체를 가리키면 어떻게 비교 하는가?

StackOverflow https://stackoverflow.com/questions/617757

문제

비교 연산자 과부하, 두 변수가 동일한 객체를 가리키는 경우 비교하는 방법 (즉, 값이 아닌)

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를 재정의해야합니다.

다른 팁

노력하다 a.ReferenceEquals(b);

두 가지가 동일한 객체를 가리키는 지 확인합니다. 객체를 사용해야합니다. 둘 다 동일하거나 둘 다 NULL 인 경우 TRUE가 반환됩니다. 그렇지 않으면 거짓을 반환합니다

나는 그것의 오래된 질문을 알고 있지만 == 또는 Object.equals 메소드를 과부하하려면 리버스 연산자에게 과부하를 걸어야합니다! =.

이 경우 내부 번호를 비교하기 때문에 다른 비교 연산자 <,>, <=,> =를 과부하시켜야합니다.

타사 소비자이든, 코드를 인수하는 개발자이든 미래에 수업을 소비하는 사람들은 코드 러쉬 또는 리팩터와 같은 것을 사용할 수 있습니다. 그런 다음 25 개의 중첩 IF 's 증후군에서 벗어나기 위해 평평하게하십시오. 코드가 그렇게하고! = 연산자를 과부하시키지 않고 == 연산자를 과부하 시키면 코드의 의도 된 의미를 변경할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top