Вне обычная расточная разность между Cast
и As
- Если я знаю, что яблоко - это Фрукты, поэтому я могу использовать
(Fruit)apple
- и он выдает исключение, если оно aint -
as value
может быть проверен с помощью null, чтобы увидеть, удалось ли [исключить исключение...]
Однако я читал @EricLippert статью об этом, и был хороший пример о типах Nullable Value:
short? s = (short?)123;
int? i = s as int?;
это не скомпилируется...
Невозможно преобразовать тип 'short?' to 'int?' посредством преобразования ссылок, преобразования бокса, преобразования для распаковки, преобразования конверсий или преобразования нулевого типа
Fine.
так почему это:
short? s = (short?)123;
int? i = (int?)s;
Скомпилирует? (Против всех ожиданий! я ЗНАЕТ, что s
не int?
- и он должен идти BANG, но он не...)
проверка трансляции здесь должна быть намного более смертельной, чем предыдущий пример (который ушел в Bang)
Я плохо себя чувствую, спрашивая об этом многословном предмете.
Спасибо в Advance.