Ler em inglês

Compartilhar via


CaseInsensitiveComparer Classe

Definição

Compara dois objetos quanto à equivalência, ignorando maiúsculas e minúsculas em cadeias de caracteres.

C#
public class CaseInsensitiveComparer : System.Collections.IComparer
C#
[System.Serializable]
public class CaseInsensitiveComparer : System.Collections.IComparer
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class CaseInsensitiveComparer : System.Collections.IComparer
Herança
CaseInsensitiveComparer
Atributos
Implementações

Exemplos

O exemplo de código a seguir cria uma tabela de hash que diferencia maiúsculas de minúsculas e uma tabela de hash que não diferencia maiúsculas de minúsculas e demonstra a diferença em seu comportamento, mesmo que ambos contenham os mesmos elementos.

C#
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

*/

Comentários

CaseInsensitiveComparer implementa a interface que dá suporte a IComparer comparações que não diferenciam maiúsculas de minúsculas em cadeias de caracteres, assim como CaseInsensitiveHashCodeProvider implementa a interface que dá suporte a IHashCodeProvider comparações que não diferenciam maiúsculas de minúsculas em cadeias de caracteres.

Importante

Não recomendamos que você use a CaseInsensitiveComparer classe para novo desenvolvimento. Em vez disso, recomendamos que você use o System.StringComparer objeto retornado pela StringComparer.CurrentCultureIgnoreCasepropriedade , StringComparer.InvariantCultureIgnoreCaseou StringComparer.OrdinalIgnoreCase .

A Comparer classe é a implementação padrão da IComparer interface e executa comparações de cadeia de caracteres que diferenciam maiúsculas de minúsculas.

Os objetos usados como chaves por um Hashtable são necessários para substituir o Object.GetHashCode método (ou a IHashCodeProvider interface) e o Object.Equals método (ou a IComparer interface). A implementação de ambos os métodos ou interfaces deve lidar com a confidencialidade de maiúsculas e minúsculas da mesma maneira; caso contrário, o Hashtable pode se comportar incorretamente. Por exemplo, ao criar um Hashtable, você deve usar essa classe com a CaseInsensitiveHashCodeProvider classe ou qualquer implementação que não diferencia maiúsculas de minúsculas IHashCodeProvider .

As comparações de cadeia de caracteres podem ter resultados diferentes dependendo da cultura. Para obter mais informações sobre comparações específicas da cultura, consulte o System.Globalization namespace e Globalização e Localização.

Construtores

CaseInsensitiveComparer()

Inicializa uma nova instância da classe CaseInsensitiveComparer usando o CurrentCulture do thread atual.

CaseInsensitiveComparer(CultureInfo)

Inicializa uma nova instância da classe CaseInsensitiveComparer usando o CultureInfo especificado.

Propriedades

Default

Obtém uma instância de CaseInsensitiveComparer que está associada ao CurrentCulture do thread atual e que está sempre disponível.

DefaultInvariant

Obtém uma instância de CaseInsensitiveComparer que está associada ao InvariantCulture e que está sempre disponível.

Métodos

Compare(Object, Object)

Executa uma comparação que não diferencia maiúsculas de minúsculas de dois objetos do mesmo tipo e retorna um valor que indica se um é menor que, igual a ou maior que o outro.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Confira também