(Старый вопрос? Кому интересно. Современная проблема.)
Во-первых, Джо дает отличный ответ , и, учитывая текущее состояние C #, я думаю,Я согласен с ним:
... потенциал для них, чтобы не синхронизироваться с фактическим типом.Если я изменю свою переменную с int?в байты ?, тогда все мои приведения неверны - но если бы я использовал .Value, я могу изменить переменную по мере необходимости.
Проблема в том, что вы всегда передают типу, потому что если вы используете .Value
, то вы фиксируете на Nullable<TAny>
, а если вы используете приведение, вы передаете "ICastableTo<TSpecific>
" составленное имя
Тем не менее, совет Джо все еще действителен, потому что компилятор будет гораздо лучше распознавать недопустимое .Value
использование, чем потенциально семантически недопустимые приведения, которые все еще могут компилироваться, и вы хотите, чтобы компилятор перехватывал какмного вещей, сколько может при смене типов .