Что лучше использовать для сортировки IComparer или IComparable?Можете сказать что из них лучше использовать и почему? Лично я сам не совсем понял что из них лучше.
Ответ
В .NET классов коллекций и массивы поддерживают сортировку,с помощью одного метода, который, как правило, называется Sort().Однако метод Sort() по умолчанию работает только для наборов примитивных типов, как int или string.
Для сортировки наборов сложных объектов применяется интерфейс IComparable
public interface IComparable
{
int CompareTo(object o);
}
Метод CompareTo на выходе возвращает целое число, которое может иметь одно из трех значений:
Меньше нуля. Значит, текущий объект должен находиться перед объектом, который
передается в качестве параметра
Равен нулю. Значит, оба объекта равны
Больше нуля. Значит, текущий объект должен находиться после объекта, передаваемого в качестве параметр
IComparable имеет обобщенную версию IComparable
IComparable
Кроме интерфейса IComparable платформа .NET также предоставляет интерфейс IComparer
interface IComparer
{
int Compare(object o1, object o2);
}
Метод Compare предназначен для сравнения двух объектов o1 и o2.
Он также возвращает три значения, в зависимости от результата сравнения:
Если первый объект больше второго,
то возвращается число больше 0
если меньше - то число меньше нуля
если оба объекта равны, возвращается ноль
IComparer имеет обобщенную версию IComparer
public class Person
{
public int Age;
}
public class AgeComparer : IComparer
Обычно вам нужно IComparable
Комментариев нет:
Отправить комментарий