За регулярной скучной разницей между Cast
и As
C# casting to nullable type?
- если я знаю, что яблоко является Fruit так что я могу использовать
(Fruit)apple
- и он бросает исключение, если он AINT as value
может быть проверен против нуля, чтобы убедиться, что удалось [не будет выбрасывать исключение ...]
Однако Ive читал @EricLippert article об этом и был хороший пример о Nullable Значение Типы:
short? s = (short?)123;
int? i = s as int?;
это не будет ... компиляции
Не удается преобразовать тип «короткий? ' to 'int?' через конвертацию ссылок, преобразование бокса, преобразование конвертирования, конвертирование упаковки или преобразование нулевого типа
Изобразительное.
так почему это:
short? s = (short?)123;
int? i = (int?)s;
ли Compile? (! Вопреки всем ожиданиям Я ЗНАТЬ что s
не int?
- и он должен идти BANG но Эйнт ...)
отлитого проверки здесь должен быть гораздо более опасным, чем бывший пример (который пошел взрыв)
Я чувствую себя плохо, спрашивая об этом разговорном предмете.
Спасибо заранее.
Вы точно описали то, что написал Эрик Липперт - компиляция будет выполняться, в то время как оператор 'as' не будет использоваться для случаев, касающихся типов с нулевым значением. – Yahia
@Yahia, но мы согласны с тем, что короткий не является INT? –
short is not int BUT может быть преобразован/преобразован в int - и это то, что вы говорите компилятору: сделайте это короткое int. – Yahia