What is the difference between the implementing interface IComparer and deriving from the abstract class Comparer when sorting objects in a generic List with List.Sort(new .