Вы, вероятно, ссылаетесь на тот факт, что следующее приводит к ошибке компилятора:
int? nullableInt = (somecondition) ? value : null;
На самом деле вам нужно добавить актерский состав здесь:
int? nullableInt = (somecondition) ? value : (int?)null;
Хотя я не могу объяснить это подробно, я подозреваю следующее:
int?
на самом деле является краткой формой для Nullable<int>
, так что это в основном экземпляр объекта. При назначении значения int
для nullableInt
свойство Nullable<int>
будет установлено внутри. Непосредственное присвоение null
также будет в порядке.
Однако условное присваивание вернет два разных типа: int
в случае, если somecondition
равно true
и object
(null
) в противном случае.
Теперь компилятор не знает, как с этим справиться, поскольку троичный оператор должен возвращать значения того же типа. Поэтому вам нужно указать желаемый «тип для значения null
».
Извините, если это не очень глубокое техническое объяснение - я уверен, что есть кто-то, кто мог бы уточнить это лучше, но это могло бы помочь понять это лучше.