null
値を次のように処理する場合default(DateTime)
は、次のようにします。
public class NullableDateTimeComparer : IComparer<DateTime?>
{
public int Compare(DateTime? x, DateTime? y)
{
return x.GetValueOrDefault().CompareTo(y.GetValueOrDefault());
}
}
そして、このように使用します
var myComparer = new NullableDateTimeComparer();
myComparer.Compare(left, right);
これを行う別の方法はNullable
、値が比較可能な型の拡張メソッドを作成することです
public static class NullableComparableExtensions
{
public static int CompareTo<T>(this T? left, T? right)
where T : struct, IComparable<T>
{
return left.GetValueOrDefault().CompareTo(right.GetValueOrDefault());
}
}
このように使用する場所
DateTime? left = null, right = DateTime.Now;
left.CompareTo(right);