Al di là la differenza noioso regolare tra Cast
e As
C# casting al tipo nullable?
- se so che mela è un Frutta modo da poter utilizzare
(Fruit)apple
- e genera un'eccezione se aint as value
può essere controllato contro null per vedere se riuscito [non getterà Eccezione ...]
Tuttavia Ive leggere @EricLippert article su questo e c'era un bel campione di circa Nullable valore Tipi:
short? s = (short?)123;
int? i = s as int?;
questo non sarà compilazione ...
non in grado di convertire il tipo 'breve? ' a "int?" tramite conversione di riferimento, conversione di boxing, conversione di unboxing, conversione del wrapping o conversione di tipo nullo
Fine.
quindi perché questo:
short? s = (short?)123;
int? i = (int?)s;
Does Compile? (! contro ogni aspettativa ho KNOW che s
non è int?
- e dovrebbe andare BANG ma aint ...)
Cast verifica qui dovrebbe essere molto più letale di quella precedente esempio (che è andato Bang)
Mi dispiace chiedere di questo argomento molto discusso.
Grazie in anticipo.
hai descritto esattamente ciò che Eric Lippert ha scritto: il cast verrà compilato mentre l'operatore 'as' non lo farà per i casi relativi ai tipi nullable. – Yahia
@Yahia ma siamo d'accordo sul fatto che breve NON è INT? –
short non è int BUT può essere lanciato/convertito in int - e questo è ciò che stai dicendo al compilatore: rendi questo un breve int. – Yahia