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/
'번역 > C# Notes for Professionals' 카테고리의 다른 글
32.4: 값 타입 (Value type) - char (0) | 2021.11.17 |
---|---|
32.3: 불변 참조 타입 (Immutable reference type) - string (0) | 2021.11.17 |
32.1: Boxing 된 값 타입 변환하기 (0) | 2021.11.04 |
31.5: 메소드에서 ref 와 out 파라미터의 차이 이해하기 (0) | 2021.10.29 |
31.4: Reference 타입에 대한 할당 (assignment) 작업 (0) | 2021.10.28 |