我具有在计算中使用的属性类型int?
和decimal?
。如果它们中任何一个的值为null,则必须默认为0。我试图在使用null-coalescing或GetValueOrDefault()
之间做出选择,如果值为null
,它们也将默认为0。
哪种方法在可读性和性能(如果有明显区别)方面会更好?
第一:
public decimal MyMethod(int memberId)
{
var dto = GetDtoValue(memberId);
return (dto.PropertyOne ?? 0)
+ (dto.PropertyTwo ?? 0)
+ (dto.PropertyThree ?? 0)
- (dto.PropertyFour ?? 0)
+ ...
}
第二:
public decimal MyMethod(int memberId)
{
var dto = GetDtoValue(memberId);
return dto.PropertyOne.GetValueOrDefault())
+ dto.PropertyTwo.GetValueOrDefault())
+ dto.PropertyThree.GetValueOrDefault())
- dto.PropertyFour.GetValueOrDefault())
+ ...
}
答案 0 :(得分:3)
这当然是意见,但是
?? 0
,感觉立刻就明白了GetValueOrDefault
,不得不花点时间考虑一下类型,然后再考虑该类型的默认值(我不认为这是个问题,只是指出了“心理映射”) This source建议GetValueOrDefault
更快,但仅在micro-optimization的情况下-因此在大多数情况下,应该优先考虑可读性。
答案 1 :(得分:1)