Исходный порядок следования: 5 2 3 4 1 Порядок следования после сортировки: 12 3 4 5 Индекс элемента массива с объектом MyClass(2): 1

При сортировке или поиске в массиве строк может возникнуть потребность явно указать способ сравнения символьных строк. Так, если массив будет сортироваться с использованием одних настроек культурной среды, а поиск в нем — с помощью других настроек, то во избежание ошибок, скорее всего, придется явно указать способ сравнения. Аналогичная ситуация возникает и в том случае, если требуется отсортировать массив символьных строк при настройках культурной среды, отличающихся от текущих.Длявыхода из подобных ситуаций можно передать экземпляр объекта типаStringComparerпараметру типаIComparer,который поддерживается в целом ряде перегружаемых вариантов методовSort () иBinarySearch ().

ПРИМЕЧАНИЕ

Более подробно особенности сравнения строк рассматриваются в главе 22.

Класс StringComparer объявляется в пространстве имен System и реализует, среди прочего, интерфейсы IComparer и I Comparer <Т>. Поэтому экземпляр объекта типа StringComparer может быть передан в качестве аргумента параметру типа IComparer. Кроме того, в классе StringComparer определен ряд доступных только для чтения свойств, возвращающих экземпляр объекта типа StringComparer и поддерживающих различные способы сравнения символьных строк. Все эти свойства перечислены ниже.

Свойство

Способ сравнения

public static StringComparer

С учетом регистра и культурной среды

CurrentCulture {get; }

public static StringComparer

Без учета регистра, но с учетом культур

CurrentCulturelgnoreCase {get; }

ной среды

public static StringComparer

С учетом регистра и безотносительно

InvariantCulture {get; }

к культурной среде

public static StringComparer

Без учета регистра и безотносительно

InvariantCulturelgnoreCase {get; }

к культурной среде

public static StringComparer Ordinal

Порядковое сравнение с учетом реги

{get; }

стра

public static StringComparer

Порядковое сравнение без учета реги

OrdinallgnoreCase {get; }

стра

Передавая явным образом экземпляр объекта типа StringComparer, можно совершенно однозначно определить порядок сортировки или поиска в массиве. Например, в приведенном фрагменте кода сортировка и поиск в массиве символьных строк осуществляется с помощью свойства StringComparer. Ordinal.

string[] strs = { "xyz", "one" , "beta", "Alpha" };

//...

Array.Sort(strs, StringComparer.Ordinal);

int idx = Array.BinarySearch(strs, "beta", StringComparer.Ordinal) ;

Обращение содержимого массива

Перейти на страницу:

Похожие книги