Поделиться через


Сравнение и сортировка в коллекциях

Обновлен: Ноябрь 2007

Классы System.Collections выполняют сравнения почти во всех процессах, вовлеченных в управление коллекцией, будь то поиск элемента для удаления или возвращение значения пары "ключ – значение".

Для сравнения используются две конструкции. Метод Equals, наследуемый или производный от Object, просто возвращает логическое значение, указывающее, являются ли два объекта эквивалентными. Методы IComparable.CompareTo и IComparer.Compare возвращают целое число, показывающее, как два сравниваемых значения относятся друг к другу. Equals используется для проверки равенства; для сортировки используются методы IComparable.CompareTo и IComparer.Compare, и их аналоги в универсальных интерфейсах IComparer<T>.Compare и IComparable<T>.CompareTo.

Сравниваться могут два элемента коллекции или элемент коллекции и указанное значение. Если условия сравнения явно не указаны, по крайней мере один из сравниваемых объектов должен реализовывать интерфейс IComparable и иметь возможность сравнения себя самого с другими объектами.

Методы некоторых классов в качестве параметра принимают реализацию IComparer. Когда используются такие методы и параметр IComparer не является нулевой ссылкой (Nothing в Visual Basic), сравниваемым объектам не требуется самим реализовать IComparable. Тем не менее рекомендуется реализация IComparable для всех классов, которые могут быть использованы в качестве значений в коллекциях списков или в качестве ключей в словарных коллекциях.

Некоторые перегрузки конструктора для коллекций словаря принимают реализацию IComparer, которая используется для сравнения ключей всякий раз, когда требуется сравнение. Array имеет перегрузки метода Sort, который принимает реализацию IComparer, используемую для конкретного вызова метода Sort.

Настройки текущего языка и региональных параметров системы могут влиять на сравнения и сортировку внутри коллекции. По умолчанию сравнения и сортировки в классах Collections учитывают язык и региональные параметры. Чтобы игнорировать установку языка и региональных параметров, следовательно, получить согласованные результаты сравнения и сортировки, используйте InvariantCulture с перегрузками членов, принимающих CultureInfo. Дополнительные сведения содержатся в разделе Выполнение операций над строками в коллекциях без учета языка и региональных параметров и Выполнение операций над строками в массивах без учета языка и региональных параметров.

См. также

Ссылки

IComparer

IComparer<T>

IComparable

IComparable<T>

Другие ресурсы

Управление коллекциями и их создание