Sort and IComparer<(Of <(TKey>)>)), : IComparer « Data Structure « C# / CSharp Tutorial





using System;
using System.Collections.Generic;

public class ReverseComparer: IComparer<string>
{
    public int Compare(string x, string y)
    {
        return y.CompareTo(x);
    }
}

public class Example
{
    public static void Main()
    {
        string[] letters = {"A","B","E", "C", "F", "G"  };

        int[] letterSizes = { 40, 5, 3, 22, 1, 18 };

        Console.WriteLine();
        for (int i = 0; i < letters.Length; i++)
        {
            Console.WriteLine("{0}: up to {1} meters long.", letters[i], letterSizes[i]);
        }

        Console.WriteLine("\nSort(letters, letterSizes)");
        Array.Sort(letters, letterSizes);

        for (int i = 0; i < letters.Length; i++)
        {
            Console.WriteLine("{0}: up to {1} meters long.", 
                letters[i], letterSizes[i]);
        }

        ReverseComparer rc = new ReverseComparer();
        Console.WriteLine("\nSort(letters, letterSizes, rc)");
        Array.Sort(letters, letterSizes, rc);

        for (int i = 0; i < letters.Length; i++)
        {
            Console.WriteLine("{0}: up to {1} meters long.", 
                letters[i], letterSizes[i]);
        }

        Console.WriteLine("\nSort(letters, letterSizes, 3, 3)");
        Array.Sort(letters, letterSizes, 3, 3);
        for (int i = 0; i < letters.Length; i++)
        {
            Console.WriteLine("{0}: up to {1} meters long.", 
                letters[i], letterSizes[i]);
        }

        Console.WriteLine("\nSort(letters, letterSizes, 3, 3, rc)");
        Array.Sort(letters, letterSizes, 3, 3, rc);
        for (int i = 0; i < letters.Length; i++)
        {
            Console.WriteLine("{0}: up to {1} meters long.", 
                letters[i], letterSizes[i]);
        }
    }
}










11.42.IComparer
11.42.1.Use IComparer
11.42.2.IComparer as a Property
11.42.3.Class with IComparable and IComparer
11.42.4.Implement IComparer to do the customized sorting
11.42.5.Sort and IComparer<(Of <(TKey>)>)),
11.42.6.Sort an Array using the default comparer and a custom comparer that reverses the sort order