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 引用比较彼此相等。
此外,实现IComparable<T>
意味着CompareTo(T value)
接受一个参数T
。因此MyCalendar : IComparable<MyCalender>
应该实现一个方法CompareTo(MyCalendar other)
而不是PersianDate
(或实现IComparable<PersianDate>
)。