2011-02-22 5 views

답변

7

SomeCondition이 거짓 일 때, 삼항 연산자 식의 값은 null이됩니다.

null이 그냥 전송 중이기 전에 (새 개체를 만들지 않음) (int?).

컴파일러는 표현식의 가능한 반환 값이 모두 동일한 유형 (또는 공통 유형으로 변환 가능)이어야하므로 캐스트가 필요합니다. 이 경우 컴파일러에서는 int (1 유형)과 int? (캐스팅 유형이 null)이 (int?)으로 변환 될 수 있음을 확인합니다. 캐스트가 없으면 컴파일러는 nullint을 조정할 방법이 없습니다. 값 유형은 null 일 수 없으며 null에는 자체 고유 유형이 없기 때문입니다.

동일한 효과를 얻으려면 (int?)을 1에 적용 할 수도 있습니다.

+0

예, 정확히 일치합니다. ** null을 나타내는''int?' "의 새로운 인스턴스 **는 새로운 인스턴스가 아닙니다. 우리가 'null'이라고 부르는 상수 값입니다. –

+0

암시 적 캐스팅에 대해 감사해야합니다. C에서 그 당시에 가장 많이 돌아 왔던 오류 코드를 얻으십시오. "캐스팅하지 않은 상태에서 포인터와 정수 사이의 비교".... 나를 이끌어 낸 uuuf 견과류!! XD – PedroC88