За пределамиобычной скучной разницы между Литым
и Как
(Fruit)apple
- и он выдает исключение, если это не так , поскольку значение
можно проверить на нуль, чтобы увидеть, удалось ли [не будет генерировать исключение.. .]Однако я читал статью @EricLippert об этом, и там был хороший пример о типах значений Nullable :
short? s = (short?)123;
int? i = s as int?;
это не будет компилироваться...
] Не удается преобразовать тип «короткий?» на «инт?» через преобразование ссылки, преобразование упаковки, преобразование распаковки, преобразование упаковки или преобразование нулевого типа
. Хорошо.
Так почему же это:
short? s = (short?)123;
int? i = (int?)s;
Компилируется ли? ( Вопреки ВСЕМУ ожиданию! Я ЗНАЮ, что s
не является int?
- и это должно быть БАХ, но это не так...)
Проверка броска здесь должна быть гораздо более смертоносной, чем в предыдущем примере (который пошел на ура)
Мне неудобно спрашивать об этой широко обсуждаемой теме.
Заранее спасибо.