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