Правильно ли использовать значение null для nullable при использовании тернарного выражения, присвоенного типу с нулевым значением?
Мне кажется странным бросать нуль в тип, поэтому я хотел бы дважды проверить, что это правильный способ сделать это:
decimal? d = data.isSpecified ? data.Value : (decimal?)null;
![alt text]()
![alt text]()
ПРИМЕЧАНИЕ. Я отмечаю ответ, который предлагает метод, который мне лично нравится лучше всего:
decimal? d = data.isSpecified ? data.Value : default(decimal?)
Ответы
Ответ 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;