1

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);
}
4

2 回答 2

2

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

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

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

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

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

if (myNullableDouble.HasValue && HasValue(myNullableDouble.Value)) {
  // Has a value
} else {
  // null or NaN
}
于 2019-02-07T15:26:24.920 回答
0

@Jaynesh,

当您使用可为空的数据类型时,添加 ? 那里的运营商。唯一可以是 NaN 的是 Null 正确吗?所以你应该简单地检查变量是否有值。您可以通过调用在 Nullable 上执行此操作。

abc.CondPot.HasValue

并获得价值

abc.CondPot.Value
于 2019-02-07T15:25:53.507 回答