C # casting to nullable type?

Poza regularna nudna różnica międzyCast iAs

Jeśli jawiedzieć żejabłko jestOwoc więc mogę użyć(Fruit)apple - i rzuca wyjątek, jeśli nieas value można sprawdzić przeciwko null, aby zobaczyć, czy się udało [nie rzuci wyjątku ...]

Jednak czytałem @EricLippertartykuł o tym i była fajna próbka o Nullable Value Types:

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

toprzyzwyczajenie skompilować...

Nie można przekonwertować typu „krótki”? na „int?” poprzez konwersję referencyjną, konwersję boksu, konwersję rozpakowywania, konwersję zawijania lub konwersję typu zerowego

W porządku.

więc dlaczego to:

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

Robi Skompilować? (Przeciwko wszystkim oczekiwaniom ! jaWIEDZIEĆ żes nie jestint? - i powinno pójść BANG, ale to nie ...)

sprawdzanie Cast tutaj powinno być znacznie bardziej zabójcze niż poprzedni przykład (który przeszedł Bang)

Źle się pytam o ten bardzo głośny temat.

Z góry dziękuję.

questionAnswers(4)

yourAnswerToTheQuestion