比较可空的DateTimeOffset变量的最佳方法?

我有打算使用两个DateTimeOffset?变量中最大的代码。我一直在使用以下代码进行此操作:

return firstTimestamp > secondTimestamp ? firstTimestamp : secondTimestamp

但是,如MSDN文档所述,如果两个值中的任何一个为null,则该操作始终解析为False。这意味着,如果某个值位于firstTimestamp中,并且secondTimestamp为null,则在应返回firstTimestamp的地方返回null。

是否存在一种有效的简化方法来比较空值?我能想到的唯一解决方案是:

if(firstTimestamp.HasValue && secondTimestamp.HasValue){
    return firstTimestamp > secondTimestamp ? firstTimestamp : secondTimestamp;
}else if(firstTimestamp.HasValue){
    return firstTimestamp;
}
return secondTimestamp;
iCMS 回答:比较可空的DateTimeOffset变量的最佳方法?

您可以使用Nullable.Compare<T>方法

DateTimeOffset? firstTimestamp = DateTimeOffset.Now;
DateTimeOffset? secondTimestamp = null;

var result = Nullable.Compare(firstTimestamp,secondTimestamp) > 0 ? firstTimestamp : secondTimestamp;

如果firstTimestamp不是null,而secondTimestampnull,它将返回一个大于0的值,反之亦然。然后,您可以在conditional operator ?:中使用该值以获得预期的结果。

本文链接:https://www.f2er.com/2227984.html

大家都在问