프로그래밍언어/C#

C#) 암묵적/명시적 널 가능 변환 / 널 가능 값의 박싱과 언박싱

HJH0825 2020. 4. 6. 09:42

암묵적/명시적 널 가능 변환

T에서 T?로의 변환은 암묵적이고 T?에서 T로의 변환은 명시적이다.

명시적 캐스팅은 null가능 객체의 value속성을 조회하는 것에 직접 대응된다. 따라서 만일 HashValue가 거짓이면 에러가 발생한다. 

 


널 가능 값의 박싱과 언박싱

T?가 박싱된 경우, 힙에 있는 박싱된 값은 T?가 아니라 T를 담는다. 이러한 최적화가 가능한 것은, 박싱된 값은 이미 널을 표현할 수 있는 참조 형식이기 때문이다.

int?가 아닌 int가 담긴다.

c#은 널 가능 형식을 as연산자로 언박싱하는 연산도 허용한다. (캐스팅 실패 시 null)