// This example demonstrates the
// System.String.Compare(String, String, StringComparison) method.

using System;
using System.Threading;

class Example29
{
    public static void Main()
    {
        string intro = "Compare three versions of the letter I using different " +
                       "values of StringComparison.";
// Define an array of strings where each element contains a version of the
// letter I. (An array of strings is used so you can easily modify this
// code example to test additional or different combinations of strings.)
        string[] threeIs = new string[3];
// LATIN SMALL LETTER I (U+0069)
        threeIs[0] = "\u0069";
// LATIN SMALL LETTER DOTLESS I (U+0131)
        threeIs[1] = "\u0131";
// LATIN CAPITAL LETTER I (U+0049)
        threeIs[2] = "\u0049";
        string[] unicodeNames =
        {
            "LATIN SMALL LETTER I (U+0069)",
            "LATIN SMALL LETTER DOTLESS I (U+0131)",
            "LATIN CAPITAL LETTER I (U+0049)"
        };
        StringComparison[] scValues =
        {
            StringComparison.CurrentCulture,
            StringComparison.CurrentCultureIgnoreCase,
            StringComparison.InvariantCulture,
            StringComparison.InvariantCultureIgnoreCase,
            StringComparison.Ordinal,
            StringComparison.OrdinalIgnoreCase
        };
//
        Console.Clear();
        Console.WriteLine(intro);
// Display the current culture because the culture-specific comparisons
// can produce different results with different cultures.
        Console.WriteLine("The current culture is {0}.\n",
                          Thread.CurrentThread.CurrentCulture.Name);
// Determine the relative sort order of three versions of the letter I.
        foreach (StringComparison sc in scValues)
            {
                Console.WriteLine("StringComparison.{0}:", sc);
// LATIN SMALL LETTER I (U+0069) : LATIN SMALL LETTER DOTLESS I (U+0131)
                Test(0, 1, sc, threeIs, unicodeNames);
// LATIN SMALL LETTER I (U+0069) : LATIN CAPITAL LETTER I (U+0049)
                Test(0, 2, sc, threeIs, unicodeNames);
// LATIN SMALL LETTER DOTLESS I (U+0131) : LATIN CAPITAL LETTER I (U+0049)
                Test(1, 2, sc, threeIs, unicodeNames);
                Console.WriteLine();
            }
    }

    protected static void Test(int x, int y,
                               StringComparison comparison,
                               string[] testI, string[] testNames)
    {
        string resultFmt = "{0} is {1} {2}";
        string result = "equal to";
        int cmpValue = 0;
//
        cmpValue = String.Compare(testI[x], testI[y], comparison);
        if      (cmpValue < 0)
            result = "less than";
        else if (cmpValue > 0)
            result = "greater than";
        Console.WriteLine(resultFmt, testNames[x], result, testNames[y]);
    }
}