Возможно, мой Google-Фу меня не сбил, но мне не удалось определить, будет ли сравнивать значение nullable в .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
}