我有一个可以为空的双重
MyNullableDouble = MyDouble == 0 ? null : MyDouble;
这给我带来了一个问题:
无法确定条件表达式的类型,因为''和'double'之间没有隐式转换
答案 0 :(得分:5)
你应该投射Mydouble
,否则在左侧你有double?
类型,而在右边你有double
,所以类型不等同(这正是异常的例外)在说):
MyNullableDouble = MyDouble == 0 ? null : (double?)MyDouble;
答案 1 :(得分:0)
是的,你不能这样做,这两个值都应该是相同的数据类型。任何特定的理由使用third..use if else ...
答案 2 :(得分:0)
您可以实施通用方法来处理此类情况。
由于所有Nullable类型都有GetValueOrDefault
方法,因此可以为非Nullable结构编写相反的方法:
public static T? GetNullIfDefault<T>(this T value)
where T: struct
{
if( value.Equals(default(T)))
{
return null;
}
return value;
}
使用示例:
MyNullableDouble = MyDouble.GetNullIfDefault();