C # casting para o tipo anulável?

Além a diferença chata regular entreCast eAs

se euconhecer naquelamaçã é umFruta então eu posso usar(Fruit)apple - e lança uma exceção se não éas value pode ser verificado em relação a null para ver se foi bem-sucedido [não lançará Exception ...]

No entanto eu tenho lido @EricLippertartigo sobre isso e houve uma boa amostra sobre tipos de valor anulável:

<code>short? s = (short?)123;
int? i = s as int?;
</code>

istonão vai compilar...

Não é possível converter o tipo "curto"? para 'int'? por meio de uma conversão de referência, conversão de boxing, conversão de unboxing, conversão de wrapping ou conversão de tipo nulo

Bem.

então por que isso:

<code>    short? s = (short?)123;
    int? i = (int?)s;
</code>

Faz Compile (Contra todas as expectativas ! EuCONHECER naquelas não éint? - e deve ir BANG mas não é ...

o Cast checando aqui deve ser muito mais mortal que o antigo exemplo (que foi Bang)

Eu me sinto mal perguntando sobre esse assunto muito falado.

Desde já, obrigado.

questionAnswers(4)

yourAnswerToTheQuestion