首页 新闻 搜索 专区 学院

Nullable<decmail> 相加的问题

0
悬赏园豆:5 [待解决问题]

如下代码
public decimal? SumPrice {
get
{
decimal? sum=null;
if (DispatchSumPrice.HasValue)
sum += DispatchSumPrice.Value;
if (VisaSumPrice.HasValue)
sum += VisaSumPrice.Value;
if (CompleteSumPrice.HasValue)
sum += CompleteSumPrice;
return sum;
}
}
可空的相加一直为null,有什么好的办法解决

灬丶的主页 灬丶 | 初学一级 | 园豆:9
提问于:2021-06-04 10:33
< >
分享
所有回答(2)
0
decimal? sum=0;
jzblive | 园豆:279 (菜鸟二级) | 2021-06-04 13:32

但是0和空是有歧义的,有的时候结果就是0,不是空

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2021-06-04 13:34

@灬丶:

if(!CompleteSumPrice.HasValue && !VisaSumPrice.HasValue && !DispatchSumPrice.HasValue){
     return null;
}
return (CompleteSumPrice ??0 ) + ( VisaSumPrice ?? 0 ) + ( DispatchSumPrice ?? 0);

顺便说一下 这样的代码确实不太妙。做好挨骂的准备吧

支持(0) 反对(0) jzblive | 园豆:279 (菜鸟二级) | 2021-06-04 13:47
0
public decimal? SumPrice
{
    get
    {
        return DispatchSumPrice + VisaSumPrice+ CompleteSumPrice;
    }
}

直接加就好了

拓拓 | 园豆:1043 (小虾三级) | 2021-06-04 13:45

你这个方法不管用啊

还是为null

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2021-06-05 12:02

@灬丶: null + 非null = null是合理的,问题是你想要什么效果呢?两个变量全部为null返回什么?一个为null返回什么?两个都不为null返回什么?返回值是否与顺序有关(比如第一个为null第二个不为null返回null,但第一个不为null第二个为null返回数字)?

支持(0) 反对(0) 拓拓 | 园豆:1043 (小虾三级) | 2021-06-05 18:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册