代码逻辑错误排查:LastUpdatedOn有值却始终使用CreatedOn
代码问题分析与修正
问题点:
- 三元运算符逻辑完全写反:你的代码里,当
discrepancy.LastUpdatedOn有值时,反而去取CreatedOn的值,这和需求完全相反——需求是有LastUpdatedOn就优先用它,你现在的逻辑搞反了分支结果。 - 未处理CreatedOn为空的场景:代码直接调用
discrepancy.CreatedOn.Value,如果CreatedOn也没有值,会直接抛出空引用异常,没法触发“两者均无值则用DateTime.MinValue”的逻辑。
修正后的代码
可以用嵌套三元运算符实现完整逻辑:
var LastUpdated = discrepancy.LastUpdatedOn.HasValue ? discrepancy.LastUpdatedOn.Value.LocalDateTime : discrepancy.CreatedOn.HasValue ? discrepancy.CreatedOn.Value.LocalDateTime : DateTime.MinValue;
或者用C#的空合并运算符简化写法,更简洁易读:
var LastUpdated = discrepancy.LastUpdatedOn?.LocalDateTime ?? discrepancy.CreatedOn?.LocalDateTime ?? DateTime.MinValue;
内容的提问来源于stack exchange,提问作者GoGetSOme
相关产品推荐
相关产品推荐

