When you implement ``IComparable`` or ``IComparable<T>`` on a class you should also override ``Equals(object)`` and overload the comparison operators (``==``, ``!=``, ``<``, ``<=``, ``>``, ``>=``). That's because the CLR cannot automatically call your ``CompareTo`` implementation from ``Equals(object)`` or from the base comparison operator implementations. Additionally, it is best practice to override ``GetHashCode`` along with ``Equals``.