将nullable double设置为null有什么问题?

Jie*_*eng 15 c#

可能重复:
为什么我不能在三元if语句中将可空int设置为null?
可空类型和三元运算符.为什么这不起作用?

以下是错的

public double? Progress { get; set; }
Progress = null; // works
Progress = 1; // works
Progress = (1 == 2) ? 0.0 : null; // fails
Run Code Online (Sandbox Code Playgroud)

无法确定条件表达式的类型,因为"double"和"<null>"之间没有隐式转换

Øyv*_*hen 28

使用?:运算符时,它必须解析为单个类型或具有它们之间隐式转换的类型.在您的情况下,它将返回一个doublenull,并且double没有隐式转换null.

你会看到的

Progress = (1 == 2) ? (double?)0.0 : null;
Run Code Online (Sandbox Code Playgroud)

做工精细,因为之间的隐式转换nullable doublenull