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

问题描述 投票:0回答:1

我有一些代码,打算取两个变量中最大的一个。DateTimeOffset? 变量。我一直在使用下面的代码进行操作。

return firstTimestamp > secondTimestamp ? firstTimestamp : secondTimestamp

然而,正如MSDN文档所描述的那样,如果任何一个值是空的,那么操作总是解析为 False 这意味着,如果一个值在 firstTimestampsecondTimestamp 为空,则返回空,其中 firstTimestamp 应该被返回。

有没有一种有效的捷径来进行这种比较,并考虑到空值?我唯一能想到的解决方案是这样的。

if(firstTimestamp.HasValue && secondTimestamp.HasValue){
    return firstTimestamp > secondTimestamp ? firstTimestamp : secondTimestamp;
}else if(firstTimestamp.HasValue){
    return firstTimestamp;
}
return secondTimestamp;
c# comparison operators nullable datetimeoffset
1个回答
2
投票

你可以使用 Nullable.Compare<T> 这里的方法

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

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

如果 firstTimestamp 不是 nullsecondTimestampnull,它返回一个值,大于 0反之亦然。然后你可以在 条件运算符 ?: 以获得预期的结果。

© www.soinside.com 2019 - 2024. All rights reserved.