C# 将nullable double设置为null有什么问题?
可能的重复项:C# 将nullable double设置为null有什么问题?,c#,C#,可能的重复项: 下面的有什么问题吗 public double? Progress { get; set; } Progress = null; // works Progress = 1; // works Progress = (1 == 2) ? 0.0 : null; // fails 无法确定条件表达式的类型,因为“double”和“”之间没有隐式转换 当使用?:运算符时,它必须解析为单个类型,或者在它们之间具有隐式转换的类型。在您的情况下,它将返回一个double或null,并
下面的有什么问题吗
public double? Progress { get; set; }
Progress = null; // works
Progress = 1; // works
Progress = (1 == 2) ? 0.0 : null; // fails
无法确定条件表达式的类型,因为“double”和“”之间没有隐式转换
当使用
?:
运算符时,它必须解析为单个类型,或者在它们之间具有隐式转换的类型。在您的情况下,它将返回一个double
或null
,并且double没有到null
的隐式转换
你会看到的
Progress = (1 == 2) ? (double?)0.0 : null;
工作正常,因为在这种情况下,
null-able-double
和null
之间存在隐式转换,所以double是0.0
Progress = (1 == 2) ? (double?)0.0 : null; // works
重复