如下代码
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,有什么好的办法解决
decimal? sum=0;
但是0和空是有歧义的,有的时候结果就是0,不是空
@灬丶:
if(!CompleteSumPrice.HasValue && !VisaSumPrice.HasValue && !DispatchSumPrice.HasValue){
return null;
}
return (CompleteSumPrice ??0 ) + ( VisaSumPrice ?? 0 ) + ( DispatchSumPrice ?? 0);
顺便说一下 这样的代码确实不太妙。做好挨骂的准备吧
public decimal? SumPrice
{
get
{
return DispatchSumPrice + VisaSumPrice+ CompleteSumPrice;
}
}
直接加就好了
你这个方法不管用啊
还是为null
@灬丶: null + 非null = null是合理的,问题是你想要什么效果呢?两个变量全部为null返回什么?一个为null返回什么?两个都不为null返回什么?返回值是否与顺序有关(比如第一个为null第二个不为null返回null,但第一个不为null第二个为null返回数字)?