Подтвердить что ты не робот

Правильно ли использовать значение null для nullable при использовании тернарного выражения, присвоенного типу с нулевым значением?

Мне кажется странным бросать нуль в тип, поэтому я хотел бы дважды проверить, что это правильный способ сделать это:

decimal? d = data.isSpecified ? data.Value : (decimal?)null;

alt text

alt text

ПРИМЕЧАНИЕ. Я отмечаю ответ, который предлагает метод, который мне лично нравится лучше всего:

decimal? d = data.isSpecified ? data.Value : default(decimal?)
4b9b3361

Ответ 1

Да, это хорошо. Альтернативы:

condition ? (decimal?) value : null

condition ? new decimal?(value) : null

condition ? value : default(decimal?)

condition ? value : new decimal?()

Выберите то, что вы найдете наиболее читаемым.

Вы ничего не можете сделать вне самого выражения, так как это тип выражения, которое компилятор не знает. Например, размещение всего выражения в скобках и его литье не помогло бы.

Ответ 2

Да, это прекрасно.

Ответ 3

Является ли data.Value типа decimal? Если да, здесь альтернативная нотация, без актера:

decimal? d = data.isSpecified ? new decimal?(data.Value) : null;