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

Aar*_*ide 12 c# nullable

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

decimal? d = data.isSpecified ? data.Value : (decimal?)null;
Run Code Online (Sandbox Code Playgroud)

替代文字

替代文字

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

decimal? d = data.isSpecified ? data.Value : default(decimal?)
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 18

是的,没关系.备择方案:

condition ? (decimal?) value : null

condition ? new decimal?(value) : null

condition ? value : default(decimal?)

condition ? value : new decimal?()
Run Code Online (Sandbox Code Playgroud)

选择你认为最具可读性的.

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