When to use IComparable<T> Vs. IComparer<T>

Micah picture Micah · Feb 11, 2009 · Viewed 29.8k times · Source

I'm trying to figure out which of these interfaces I need to implement. They both essentially do the same thing. When would I use one over the other?

Answer

Andrew Hare picture Andrew Hare · Feb 11, 2009

Well they are not quite the same thing as IComparer<T> is implemented on a type that is capable of comparing two different objects while IComparable<T> is implemented on types that are able to compare themselves with other instances of the same type.

I tend to use IComparable<T> for times when I need to know how another instance relates to this instance. IComparer<T> is useful for sorting collections as the IComparer<T> stands outside of the comparison.