When to use IComparable<T> Vs. IComparer<T>
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?
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.
Use IComparable<T>
when the class has an intrinsic comparison.
Use IComparer<T>
when you want a comparison method other than the class' intrinsic comparison, if it has one.