Сортировка массива строк в С#

Возможно, это звучит странно, но после долгого программирования я просто получил сортировку массивов. Все было так, как я ожидал, пока не попытался отсортировать массив строк, содержащих внутри себя две идентичные строки. Давайте посмотрим:

Предположим, что имеет место следующее:

string[] testArray = new string[]
    {
        "aa",
        "ab",
        "ac",
        "ad",
        "ab",
        "af"
    };

Array.Sort(testArray, StringComparer.InvariantCulture);

В этой ситуации я получаю простой массив с нулевыми значениями. Я понял, что это поведение связано с тем, что значения внутри массива не являются отдельными значениями. Есть ли лучшее объяснение этому? Как отсортировать нечеткий массив?

Ответ 1

Этот фрагмент кода работает правильно enter image description here

Ответ 2

Если у вас есть проблемы с числами (скажем, 1, 2, 10, 12, которые будут отсортированы 1, 10, 12, 2), вы можете использовать LINQ:

var arr = arr.OrderBy(x=>x).ToArray();

Ответ 3

На самом деле я не вижу никаких нулей:

Дано:

static void Main()
        {
            string[] testArray = new string[]
            {
                "aa",
                "ab",
                "ac",
                "ad",
                "ab",
                "af"
            };

            Array.Sort(testArray, StringComparer.InvariantCulture);

            Array.ForEach(testArray, x => Console.WriteLine(x));
        }

Я получил:

enter image description here