Section 32.2: Boxing 된 값 타입 비교하기

값 타입 (value type) 이 object 타입의 변수에 할당된 경우, 우리는 이를 Boxing 되었다고 표현한다 - 해당 값은 System.Object 인스턴스에 저장된 상태인 것이다. 이러한 경우, == 를 이용하여 값을 비교하려고 하는 경우 의도치 않은 결과를 맞이하게 될 수도 있다. 아래 예제를 확인한다:

object left = (int)1; // int 값이 Boxing 되었다 object right = (int)1; // int 값이 Boxing 되었다 var comparison1 = left == right; // false 가 반환된다

이러한 경우 우리가 기대하는 값을 반환해 주는, 재정의된 (overloaded) Equals 메소드를 사용함으로써 위와 같은 예기치 못한 상황을 피할 수 있다.

var comparison2 = left.Equals(right); // true 가 반환된다

혹은, 좌측과 우측 변수를 모두 Unboxing 하여 int 값 자체가 비교되도록 하는 방식으로 동일한 결과를 얻을 수도 있다:

var comparison3 = (int)left == (int)right; // true 가 반환된다
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts