Меня также раздражает, что он не может вывести тип на основе присваивания, особенно когда это тип значения. Хотя есть причины, когда вы попадаете в объект heirarchies.
Если «ResultOfSomeCalc ()» вернул «int?», То это будет работать . C # должен выяснить тип независимо от того, что находится слева от назначения. Таким образом, вы говорите, что вернете ноль или целое число - и логика в компиляторе не существует, чтобы он заменял Nullable как общий знаменатель.
Обратите внимание, что эти варианты действительно работают, и это может помочь вам понять:
object someValue = true ? new Nullable<int>(ResultOfSomeCalc()) : null;
object someValue = true ? (int?)ResultOfSomeCalc() : null;
Надеюсь, это поможет.