Прочитать на английском

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


CaseInsensitiveComparer Класс

Определение

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

public class CaseInsensitiveComparer : System.Collections.IComparer
[System.Serializable]
public class CaseInsensitiveComparer : System.Collections.IComparer
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class CaseInsensitiveComparer : System.Collections.IComparer
Наследование
CaseInsensitiveComparer
Атрибуты
Реализации

Примеры

В следующем примере кода создаются хэш-таблица с учетом регистра и хэш-таблица без учета регистра и демонстрируется разница в их поведении, даже если они содержат одни и те же элементы.

using System;
using System.Collections;
using System.Globalization;

public class SamplesHashtable  {

   public static void Main()  {

      // Create a Hashtable using the default hash code provider and the default comparer.
      Hashtable myHT1 = new Hashtable();
      myHT1.Add("FIRST", "Hello");
      myHT1.Add("SECOND", "World");
      myHT1.Add("THIRD", "!");

      // Create a Hashtable using a case-insensitive code provider and a case-insensitive comparer,
      // based on the culture of the current thread.
      Hashtable myHT2 = new Hashtable( new CaseInsensitiveHashCodeProvider(), new CaseInsensitiveComparer() );
      myHT2.Add("FIRST", "Hello");
      myHT2.Add("SECOND", "World");
      myHT2.Add("THIRD", "!");

      // Create a Hashtable using a case-insensitive code provider and a case-insensitive comparer,
      // based on the InvariantCulture.
      Hashtable myHT3 = new Hashtable( CaseInsensitiveHashCodeProvider.DefaultInvariant, CaseInsensitiveComparer.DefaultInvariant );
      myHT3.Add("FIRST", "Hello");
      myHT3.Add("SECOND", "World");
      myHT3.Add("THIRD", "!");

      // Create a Hashtable using a case-insensitive code provider and a case-insensitive comparer,
      // based on the Turkish culture (tr-TR), where "I" is not the uppercase version of "i".
      CultureInfo myCul = new CultureInfo( "tr-TR" );
      Hashtable myHT4 = new Hashtable( new CaseInsensitiveHashCodeProvider( myCul ), new CaseInsensitiveComparer( myCul ) );
      myHT4.Add("FIRST", "Hello");
      myHT4.Add("SECOND", "World");
      myHT4.Add("THIRD", "!");

      // Search for a key in each hashtable.
      Console.WriteLine( "first is in myHT1: {0}", myHT1.ContainsKey( "first" ) );
      Console.WriteLine( "first is in myHT2: {0}", myHT2.ContainsKey( "first" ) );
      Console.WriteLine( "first is in myHT3: {0}", myHT3.ContainsKey( "first" ) );
      Console.WriteLine( "first is in myHT4: {0}", myHT4.ContainsKey( "first" ) );
   }
}


/*
This code produces the following output.  Results vary depending on the system's culture settings.

first is in myHT1: False
first is in myHT2: True
first is in myHT3: True
first is in myHT4: False

*/

Комментарии

CaseInsensitiveComparer IComparer реализует интерфейс, поддерживающий сравнения строк без учета регистра, так же как CaseInsensitiveHashCodeProvider реализует IHashCodeProvider интерфейс, поддерживающий сравнение строк без учета регистра.

Важно!

Мы не рекомендуем использовать класс для новой разработки CaseInsensitiveComparer . Вместо этого рекомендуется использовать System.StringComparer объект , возвращаемый свойством StringComparer.CurrentCultureIgnoreCase, StringComparer.InvariantCultureIgnoreCaseили StringComparer.OrdinalIgnoreCase .

Класс Comparer является реализацией IComparer интерфейса по умолчанию и выполняет сравнение строк с учетом регистра.

Объекты, используемые в качестве ключей, Hashtable необходимы для переопределения Object.GetHashCode метода (или IHashCodeProvider интерфейса) и Object.Equals метода (или IComparer интерфейса). Реализация обоих методов или интерфейсов должна одинаково обрабатывать чувствительность к регистру; В Hashtable противном случае объект может вести себя неправильно. Например, при создании Hashtableнеобходимо использовать этот класс с классом CaseInsensitiveHashCodeProvider или любой реализацией без учета IHashCodeProvider регистра.

Сравнение строк может иметь разные результаты в зависимости от языка и региональных параметров. Дополнительные сведения о сравнениях с учетом языка и региональных параметров см. в System.Globalization разделе Пространство имен и Глобализация и локализация.

Конструкторы

CaseInsensitiveComparer()

Инициализирует новый экземпляр класса CaseInsensitiveComparer с помощью свойства CurrentCulture текущего потока.

CaseInsensitiveComparer(CultureInfo)

Инициализирует новый экземпляр класса CaseInsensitiveComparer с использованием указанного объекта CultureInfo.

Свойства

Default

Получает экземпляр класса CaseInsensitiveComparer, который связан со свойством CurrentCulture текущего потока и всегда доступен.

DefaultInvariant

Получает экземпляр класса CaseInsensitiveComparer, который связан со свойством InvariantCulture и всегда доступен.

Методы

Compare(Object, Object)

Выполняет сравнение двух объектов одного типа без учета регистра и возвращает значение, которое показывает, в каком отношении (меньше, равно или больше) находятся два объекта.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел