CaseInsensitiveComparer Klass

Definition

Jämför två objekt för ekvivalens och ignorerar fallet med strängar.

public ref class CaseInsensitiveComparer : System::Collections::IComparer
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
type CaseInsensitiveComparer = class
    interface IComparer
[<System.Serializable>]
type CaseInsensitiveComparer = class
    interface IComparer
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type CaseInsensitiveComparer = class
    interface IComparer
Public Class CaseInsensitiveComparer
Implements IComparer
Arv
CaseInsensitiveComparer
Attribut
Implementeringar

Exempel

I följande kodexempel skapas en skiftlägeskänslig hashtabell och en skiftlägeskänslig hashtabell och visar skillnaden i deras beteende, även om båda innehåller samma element.

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

*/
Imports System.Collections
Imports System.Globalization

Public Class SamplesHashtable

   Public Shared Sub Main()

      ' Create a Hashtable using the default hash code provider and the default comparer.
      Dim myHT1 As 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.
      Dim myHT2 As 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.
      Dim myHT3 As 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".
      Dim myCul As New CultureInfo("tr-TR")
      Dim myHT4 As 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"))

   End Sub

End Class


'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

Kommentarer

CaseInsensitiveComparerimplementerar gränssnittsstöd IComparer för skiftlägesokänsliga jämförelser på strängar, precis som implementerar IHashCodeProvider gränssnittet som CaseInsensitiveHashCodeProvider stöder skiftlägesokänsliga jämförelser på strängar.

Important

Vi rekommenderar inte att du använder CaseInsensitiveComparer klassen för ny utveckling. I stället rekommenderar vi att du använder objektet System.StringComparer som returneras av StringComparer.CurrentCultureIgnoreCaseegenskapen , StringComparer.InvariantCultureIgnoreCaseeller StringComparer.OrdinalIgnoreCase .

Klassen Comparer är standardimplementeringen av IComparer gränssnittet och utför skiftlägeskänsliga strängjämförelser.

De objekt som används som nycklar av en Hashtable krävs för att åsidosätta Object.GetHashCode metoden (eller IHashCodeProvider gränssnittet) och Object.Equals metoden (eller IComparer gränssnittet). Implementeringen av båda metoderna eller gränssnitten måste hantera skiftlägeskänslighet på samma sätt. annars kan det Hashtable bete sig felaktigt. När du till exempel skapar en Hashtablemåste du använda den CaseInsensitiveHashCodeProvider här klassen med klassen eller valfri skiftlägeskänslig IHashCodeProvider implementering.

Strängjämförelser kan ha olika resultat beroende på kulturen. Mer information om kulturspecifika jämförelser finns i System.Globalization namnområdet och Globalisering och lokalisering.

Konstruktorer

Name Description
CaseInsensitiveComparer()

Initierar en ny instans av CaseInsensitiveComparer klassen med hjälp av den CurrentCulture aktuella tråden.

CaseInsensitiveComparer(CultureInfo)

Initierar en ny instans av CaseInsensitiveComparer klassen med den angivna CultureInfo.

Egenskaper

Name Description
Default

Hämtar en instans av CaseInsensitiveComparer som är associerad med den CurrentCulture aktuella tråden och som alltid är tillgänglig.

DefaultInvariant

Hämtar en instans av CaseInsensitiveComparer som är associerad med InvariantCulture och som alltid är tillgänglig.

Metoder

Name Description
Compare(Object, Object)

Utför en skiftlägeskänslig jämförelse av två objekt av samma typ och returnerar ett värde som anger om det ena är mindre än, lika med eller större än det andra.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för

Se även