使用三元表达式赋值为可空类型时,将null转换为可空是否正确?

时间:2010-10-29 16:09:47

标签: c# nullable

将null转换为类型对我来说很奇怪,所以我想仔细检查这是否是正确的方法:

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

alt text

alt text

注意:我正在标记答案,表明我个人最喜欢的方法:

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

3 个答案:

答案 0 :(得分:17)

是的,没关系。备选方案:

condition ? (decimal?) value : null

condition ? new decimal?(value) : null

condition ? value : default(decimal?)

condition ? value : new decimal?()

选择您认为最具可读性的。

在表达式本身之外没有什么可以做的,因为它是编译器不知道的表达式的类型。例如,将整个表达式放在括号中并将其转换为无效。

答案 1 :(得分:2)

是的,完全没问题。

答案 2 :(得分:1)

类型为data.Value的{​​{1}}?如果是这样,这里有一个替代符号,没有演员:

decimal