2012-01-04 2 views

답변

15

0 암시 적 객체 (박스)로 변환되어있는 int입니다, 당신은 짧은에 직접 박스 INT를 언 박싱 할 수 없기 때문에. 이 작동 :

short s = (short)(int)(nullObj ?? 0); 

A가 T 박스형 (T 물론 비 널 값 유형 임) 만 T 또는 T?에 박싱 수있다.

+2

[대표 및 신원] (http://blogs.msdn.com/b/ericlippert/archive/2009/03/19/representation-and-identity.aspx)에서는 왜 이것이 필요한지 설명합니다 (즉, 왜 isn 오직 1 회 던지기만으로 자동으로 완료됩니다.) – Brian

5

마지막 줄의 null-coalescing 연산자의 결과는 박스형 int입니다. 그런 다음 표시된 것을 실행 시간에 실패한 short으로 unbox하려고합니다. 당신이했던 것처럼

그것은이다 : 널 병합 연산자의

object x = 0; 
short s = (short) x; 

존재는 여기에 붉은 청어의 약간이다.

+2

빨간 청어를 가리키는 +1. – phoog

관련 문제