Книга: C# 4.0: полное руководство
Применение класса StringComparer
Применение класса StringComparer
В простых примерах из этой главы указывать явно способ сравнения символьных строк совсем не обязательно. Но это может потребоваться в тех случаях, когда строки сохраняются в отсортированной коллекции или когда строки ищутся либо сортируются в коллекции. Так, если строки должны быть отсортированы с учетом настроек одной культурной среды, а затем их приходится искать с учетом настроек другой культурной среды, то во избежание ошибок, вероятнее всего, потребуется указать способ сравнения символьных строк. Аналогичная ситуация возникает и при хешировании коллекции. Для подобных (и других) случаев в конструкторах классов некоторых коллекций предусмотрена поддержка параметра типа IComparer
. С целью явно указать способ сравнения символьных строк этому параметру передается в качестве аргумента экземпляр объекта класса StringComparer
.
Класс StringComparer
был подробно описан в главе 21 при рассмотрении вопросов сортировки и поиска в массивах. В этом классе реализуются интерфейсы IComparer, IComparer<String>, IEqualityComparer
, а также IEqualityComparer<String>
. Следовательно, экземпляр объекта типа StringComparer
может быть передан параметру типа IComparer
в качестве аргумента. В классе StringComparer
определяется несколько доступных только для чтения свойств, возвращающих экземпляр объекта типа StringComparer
, который поддерживает различные способы сравнения символьных строк. Как пояснялось в главе 21, к числу этих свойств относятся следующие: CurrentCulture, CurrentCulturelgnoreCase, InvariantCulture, InvariantCulturelgnoreCase, Ordinal
, а также OrdinallgnoreCase
. Все эти свойства можно использовать для явного указания способа сравнения символьных строк.
В качестве примера ниже показано, как коллекция типа SortedList<TKey, TValue>
конструируется для хранения символьных строк, ключи которых сравниваются порядковым способом.
SortedList<string, int> users =
new SortedList<string, int>(StringComparer.Ordinal);
- Краткий обзор коллекций
- Необобщенные коллекции
- Хранение отдельных битов в классе коллекции BitArray
- Специальные коллекции
- Обобщенные коллекции
- Параллельные коллекции
- Сохранение объектов, определяемых пользователем классов, в коллекции
- Реализация интерфейса IComparable
- Применение интерфейса IComparer
- Применение класса StringComparer
- Доступ к коллекции с помощью перечислителя
- Реализация интерфейсов IEnumerable и IEnumerator
- Применение итераторов
- Инициализаторы коллекций
- 3.4. Отношения между классами
- Применение функции scanf( )
- Применение PHP-технологий в программе HtmlPad
- 17.6 Применение агентов новостей для настольных систем
- 2.3. Эмпирическая модель обучения Дэвида Колба и ее применение в практике бизнес-тренинга
- Применение основного потока
- Применение пользовательских атрибутов
- 9.7.1. Определение подкласса
- Инварианты класса и семантика ссылок
- Применение peristaltic.py к арматуре
- Применение лямбда-выражения в качестве задачи
- Проблемы в команде и применение к ним принципов осознанной практики