Интерфейс IComparer в C#
Интерфейс IComparer<T> описывает внешнее правило: метод Compare
получает два объекта и возвращает отрицательное число, ноль или положительное.
Так отделяют порядок от данных - один и тот же тип можно сортировать по-разному
разными comparer.
Сравним строки по длине. Положительный результат означает, что
"aa" длиннее "b". Если строка не задана, метод
считает её длину нулевой:
Console.WriteLine(new ByLength().Compare("aa", "b"));
class ByLength : IComparer<string>
{
public int Compare(string? x, string? y) =>
(x?.Length ?? 0).CompareTo(y?.Length ?? 0);
}
Сравните "moon" и "sun" по длине и выведите знак.