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.MinValue
Foo
null
定義により、任意のオブジェクトは null より大きい (または null に続く) と比較され、2 つの null 参照は互いに等しいと比較されます。
また、のパラメータを取るIComparable<T>
手段を実装します。したがって、 (または実装する)のではなく、メソッドを実装する必要があります。CompareTo(T value)
T
MyCalendar : IComparable<MyCalender>
CompareTo(MyCalendar other)
PersianDate
IComparable<PersianDate>