c# - 不能转双?加倍
问题描述
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);
}
解决方案
这只是有限Nullable<T>
的自动转换(实际上当您使用 为值类型名称添加后缀时?
)到T
.
在其他地方您需要进行转换,并决定如何处理null
.
例如。当 0 是一个很好的默认值时:
if (HasValue(myNullableDouble ?? 0.0) { ...
其他时候你需要更丰富的东西:
if (myNullableDouble.HasValue && HasValue(myNullableDouble.Value)) {
// Has a value
} else {
// null or NaN
}
推荐阅读
- android - 如何在 TypeConverter 中使用 Gson 将 Kotlin Enum 与 Room 一起存储?
- xml - 使用 VBA 将 XML 元素映射到 Excel 中的列
- python - 使用 scikit learn 训练机器学习模型以进行时间序列预测
- javascript - 计算日历周视图中的预订高度
- r - 使用 bash (linux) 选择制表符分隔文件的特定行
- java - ArrayList 返回类型方法是返回 ArrayList 变量的内存地址还是它的副本?
- r - R从本地文件计算平均值和中位数
- java - System.out.println() 在某些行上缺少制表符 ("\t")
- html - 如何使我的登录页面响应,以便登录按钮不会消失?
- javascript - 为什么 Internet Explorer 11 中没有通过 Ajax 调用类函数?