Почему компилятор C # ведет себя таким образом с двумя эквивалентными операторами? [Дубликат]

На этот вопрос уже есть ответ:

Верхняя часть кода - это то, чем я, в конечном счете, хочу, чтобы моя логика была просто закодирована полностью. Если значение представляет собой пустую строку, тогда установите для значения правильно значение null, в противном случае проанализируйте его как DateTime и установите значение свойства для этого проанализированного DateTime. Фактическим свойством является обнуляемый DateTime («DateTime?»). Компилятор не имеет проблем с этим. Тем не менее, когда я пытаюсь сделать это, чтобы уменьшить код, посмотрите на полученную ошибку:

original code

Разве это не странно? Разве эти два утверждения не должны быть сопоставимыми / одинаковыми? Я что-то не так кодирую в своем троичном операторе, или компилятор может просто не обрабатывать такого рода присваивания как строки между двумя разными типами? Если это просто то, что он не может обработать установку встроенного свойства, когда два потенциальных свойства могут быть разных типов… ну, это довольно глупо для компилятора, потому что технически этот параметр в методе SetValue является просто универсальным объектом:

method defintion

-11
задан Westley Bennett 27 August 2019 в 13:35
поделиться