也许我的 Google-Fu 让我失望了,但我无法确定在 .NET 中比较可空值是否总是比其他东西少。
我有一些类似的代码
MyClass findLatest(List<MyClass> items){
DateTime? latest_tstamp = null;
MyClass latest_item = null;
foreach(var item in items){
if (latest_tstamp < item.tstamp){
latest_tstamp = item.tstamp;
latest_item = item;
}
}
return latest_item;
}
它似乎在我尝试过的少数有限情况下有效(当然item.tstamp
也声明DateTime? tstamp
了)。
这是有保证的行为吗?
结论(?)
根据答案(以及 Jon Skeet 的 [对另一个问题的回答]),我进行了以下检查:
if (item.tstamp != null &&
(latest_tstamp == null || latest_tstamp < item.tstamp)){
// do stuff
}