class ReverseComparer : IComparer { readonly IComparer defaultComparer = Comparer.Default; static IComparer instance; static object lockObj = new object(); private ReverseComparer() { } public IComparer Default { get { if (instance == null) { lock (lockObj) { if (instance == null) { instance = new ReverseComparer(); } } } return instance; } } public int Compare(T x, T y) { return -1 * defaultComparer.Compare(x, y); } }