Leer en inglés

Compartir a través de


CaseInsensitiveComparer Clase

Definición

Compara dos objetos para ver la equivalencia omitiendo la distinción entre mayúsculas y minúsculas de las cadenas.

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
Herencia
CaseInsensitiveComparer
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se crea una tabla hash que distingue mayúsculas de minúsculas y una tabla hash que no distingue mayúsculas de minúsculas y se muestra la diferencia en su comportamiento, incluso si ambos contienen los mismos 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

*/

Comentarios

CaseInsensitiveComparer implementa la IComparer interfaz que admite comparaciones que no distinguen mayúsculas de minúsculas en cadenas, igual que CaseInsensitiveHashCodeProvider implementa la IHashCodeProvider interfaz que admite comparaciones que no distinguen mayúsculas de minúsculas en cadenas.

Importante

No se recomienda usar la CaseInsensitiveComparer clase para el nuevo desarrollo. En su lugar, se recomienda usar el System.StringComparer objeto devuelto por la StringComparer.CurrentCultureIgnoreCasepropiedad , StringComparer.InvariantCultureIgnoreCaseo StringComparer.OrdinalIgnoreCase .

La Comparer clase es la implementación predeterminada de la IComparer interfaz y realiza comparaciones de cadenas que distinguen mayúsculas de minúsculas.

Los objetos usados como claves por un Hashtable elemento son necesarios para invalidar el Object.GetHashCode método (o la IHashCodeProvider interfaz) y el Object.Equals método (o la IComparer interfaz). La implementación de ambos métodos o interfaces debe controlar la distinción entre mayúsculas y minúsculas de la misma manera; de lo contrario, Hashtable podría comportarse incorrectamente. Por ejemplo, al crear un Hashtable, debe usar esta clase con la CaseInsensitiveHashCodeProvider clase o cualquier implementación que no distingue mayúsculas de minúsculas IHashCodeProvider .

Las comparaciones de cadenas pueden tener resultados diferentes en función de la referencia cultural. Para obtener más información sobre las comparaciones específicas de la referencia cultural, consulte el espacio de nombres y globalización System.Globalizationy la localización.

Constructores

CaseInsensitiveComparer()

Inicializa una nueva instancia de la clase CaseInsensitiveComparer mediante la propiedad CurrentCulture del subproceso actual.

CaseInsensitiveComparer(CultureInfo)

Inicializa una nueva instancia de la clase CaseInsensitiveComparer utilizando la clase CultureInfo especificada.

Propiedades

Default

Obtiene una instancia de CaseInsensitiveComparer que está asociada a la propiedad CurrentCulture del subproceso actual y que siempre está disponible.

DefaultInvariant

Obtiene una instancia de CaseInsensitiveComparer que está asociada a la propiedad InvariantCulture y que siempre está disponible.

Métodos

Compare(Object, Object)

Realiza una comparación sin distinguir mayúsculas y minúsculas de dos objetos del mismo tipo y devuelve un valor que indica si uno es menor, igual o mayor que el otro.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Producto Versiones
.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

Consulte también