首页 > 解决方案 > 不能转双?加倍

问题描述

net,我正在尝试验证属性的值是否为 NaN,但它给了我“无法转换双倍?为以下代码加倍'这个错误,但如果我删除'?在模型中,所有方法都可以正常工作,你能帮忙看看如何验证双重吗?是否为 NaN。

public class abcDTO
{
    public double? CondPot { get; set; }
    public double? WaterPot { get; set; }
    public double? WaterInjPot { get; set; }
}
-------

public async Task<abcDTO> UpdateWellDeferment(abcDTO abc)
{
    if (HasValue(abc.CondPot))
        throw new ArgumentException($"CondPot is not a valid number");

        .....       
}

public static bool HasValue(double val)
{
    return Double.IsNaN(val);
}

标签: c#entity-framework

解决方案


这只是有限Nullable<T>的自动转换(实际上当您使用 为值类型名称添加后缀时?)到T.

在其他地方您需要进行转换,并决定如何处理null.

例如。当 0 是一个很好的默认值时:

if (HasValue(myNullableDouble ?? 0.0) { ...

其他时候你需要更丰富的东西:

if (myNullableDouble.HasValue && HasValue(myNullableDouble.Value)) {
  // Has a value
} else {
  // null or NaN
}

推荐阅读