Se si desidera un valore null
di essere trattati come default(DateTime)
si potrebbe fare qualcosa di simile:
public class NullableDateTimeComparer : IComparer<DateTime?>
{
public int Compare(DateTime? x, DateTime? y)
{
return x.GetValueOrDefault().CompareTo(y.GetValueOrDefault());
}
}
e usalo in questo modo
var myComparer = new NullableDateTimeComparer();
myComparer.Compare(left, right);
Un altro modo per farlo sarebbe quello di rendere un metodo di estensione per Nullable
tipi i cui valori sono paragonabili
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());
}
}
dove occorre utilizzare in questo modo
DateTime? left = null, right = DateTime.Now;
left.CompareTo(right);
è nullo zmbq
In che modo i risultati sono diversi da quanto previsto quando si utilizza 'birthDate> hireDate', perché questo è il modo più semplice per farlo. C# ha introdotto ** operatori sollevati ** per semplificare le cose. –