Интерфейс 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