Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
424 of 1492 menu
◀ ▶

Интерфейс IComparer

Интерфейс IComparer<T> объявляет метод Compare. Его передают в Sort и BinarySearch, когда порядок задаётся не самим типом.

Синтаксис

int Compare(T x, T y);

Пример

Давайте сравним числа через Comparer:

using System; using System.Collections.Generic; class Program { static void Main() { IComparer<int> cmp = Comparer<int>.Default; Console.WriteLine(cmp.Compare(1, 2)); } }

Результат выполнения кода:

-1

Пример

Давайте отсортируем список с IComparer:

using System; using System.Collections.Generic; class Program { static void Main() { List<int> nums = new List<int> {1, 2, 3, 4, 5}; nums.Sort(Comparer<int>.Default); Console.WriteLine(string.Join(" ", nums)); } }

Результат выполнения кода:

1 2 3 4 5

Пример

Давайте сравним строки:

using System; using System.Collections.Generic; class Program { static void Main() { IComparer<string> cmp = Comparer<string>.Default; Console.WriteLine(cmp.Compare("a", "b") < 0); } }

Результат выполнения кода:

True

Пример

Давайте используем обратный порядок:

using System; using System.Collections.Generic; class Program { static void Main() { List<int> nums = new List<int> {1, 2, 3, 4, 5}; nums.Sort((a, b) => b.CompareTo(a)); Console.WriteLine(nums[0]); } }

Результат выполнения кода:

5

Смотрите также

  • метод Compare,
    который сравнивает пару значений
  • класс Comparer,
    который помогает создать IComparer
  • интерфейс IComparable,
    который сравнивает объект с другим
  • метод Sort,
    который принимает IComparer
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить