おそらく私の Google-Fu には失敗しましたが、.NET での nullable の比較が常に他のものよりも小さいかどうかを判断できませんでした。
これに似たコードがあります
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
}