我在一行 C# 代码中遇到了一些问题。我正在尝试在我们的数据库中获取最终客户的价格金额。它是一个可以为空的小数,所以如果没有填写,我使用 0。
有人可以看看这行代码并解释为什么这不起作用吗?
这是特定的行:
Decimal totalPrice = requestedPrice.EndCustomerAmount.HasValue ? requestedPrice.EndCustomerAmount.Value : 0;
问题是对于某些价格,即使 EndCustomerAmount 有值,totalPrice 也是 0。
如果我调试代码并在即时窗口中执行 if 语句,它会返回正确的值。即使我在即时窗口中分配值,totalPrice 变量也会保持正确的数量。
我尝试了以下几行来解决问题,但没有运气:
Decimal totalPrice = requestedPrice.EndCustomerAmount ?? 0;
和这个:
Decimal totalPrice = requestedPrice.EndCustomerAmount ?? 0m;
和这个:
Decimal totalPrice = 0
totalPrice = requestedPrice.EndCustomerAmount.HasValue ? requestedPrice.EndCustomerAmount.Value : 0;
似乎有效的是:
Decimal totalPrice = 0
if(requestedPrice.EndCustomerAmount.HasValue)
totalPrice = requestedPrice.EndCustomerAmount
或这个:
Decimal? totalPrice = requestedPrice.EndCustomerAmount.HasValue ? requestedPrice.EndCustomerAmount.Value : 0;
谢谢!