IComparableを公開しCompareToます。個別にオーバーロードする必要があります<。>
class Foo : IComparable<Foo>
{
private static readonly Foo Min = new Foo(Int32.MinValue);
private readonly int value;
public Foo(int value)
{
this.value = value;
}
public int CompareTo(Foo other)
{
return this.value.CompareTo((other ?? Min).value);
}
public static bool operator <(Foo a, Foo b)
{
return (a ?? Min).CompareTo(b) < 0;
}
public static bool operator >(Foo a, Foo b)
{
return (a ?? Min).CompareTo(b) > 0;
}
}
との比較で失敗しないようにコードを編集nullしました。簡単にするために、適切な場合valueを除いて機能するショートカットを使用しました。厳密に言えば、契約を正しくするには、明示的に確認する必要があります。Int32.MinValueFoonull
定義により、任意のオブジェクトは null より大きい (または null に続く) と比較され、2 つの null 参照は互いに等しいと比較されます。
また、のパラメータを取るIComparable<T>手段を実装します。したがって、 (または実装する)のではなく、メソッドを実装する必要があります。CompareTo(T value)TMyCalendar : IComparable<MyCalender>CompareTo(MyCalendar other)PersianDateIComparable<PersianDate>