Следующий код не компилируется:
//int a = ...
int? b = (int?) (a != 0 ? a : null);
Для компиляции его необходимо изменить на
int? b = (a != 0 ? a : (int?) null);
Поскольку оба b = null
и b = a
являются законными, для меня это не имеет смысла.
Почему нам нужно отбрасывать null
в int?
и почему мы не можем просто предоставить явный тип для всего выражения (что, как я знаю, возможно в других случаях)?