Assembly : mscorlib (dans mscorlib.dll)
Syntaxe<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public MustInherit Class StringComparer Implements IComparer, IEqualityComparer, IComparer(Of String), _ IEqualityComparer(Of String)
Dim instance As StringComparer
[SerializableAttribute] [ComVisibleAttribute(true)] public abstract class StringComparer : IComparer, IEqualityComparer, IComparer<string>, IEqualityComparer<string>
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class StringComparer abstract : IComparer, IEqualityComparer, IComparer<String^>, IEqualityComparer<String^>
/** @attribute SerializableAttribute() */ /** @attribute ComVisibleAttribute(true) */ public abstract class StringComparer implements IComparer, IEqualityComparer, IComparer<String>, IEqualityComparer<String>
SerializableAttribute ComVisibleAttribute(true) public abstract class StringComparer implements IComparer, IEqualityComparer, IComparer<String>, IEqualityComparer<String>
NotesUn objet dérivé de la classe StringComparer représente les opérations de comparaison basée sur une chaîne, d'égalité et de code de hachage qui prennent en considération les règles de comparaison spécifiques à la casse et la culture. Vous pouvez utiliser la classe StringComparer pour créer une comparaison spécifique au type pour trier les éléments dans une collection générique. Les classes telles que Hashtable, Dictionary, SortedList et SortedList utilisent la classe StringComparer pour le tri.
Une opération de comparaison qui est représentée par la classe StringComparer est définie pour respecter ou non la casse et utiliser des règles de comparaison des mots (dépendantes de la culture) ou ordinale (indépendantes de la culture). Pour plus d'informations sur les règles de comparaison des mots ou ordinale, consultez System.Globalization.CompareOptions.
Propriétés implémentées
Vous pouvez avoir des doutes quant à l'utilisation des propriétés de la classe StringComparer à cause d'une contradiction apparente. La classe StringComparer est déclarée abstract (MustInherit en Visual Basic), ce qui signifie que ses membres peuvent être appelés uniquement sur un objet d'une classe dérivée de la classe StringComparer. La contradiction réside dans le fait que chaque propriété de la classe StringComparer est déclarée static (Shared en Visual Basic), ce qui signifie que la propriété peut être appelée sans créer au préalable une classe dérivée.
Vous pouvez appeler une propriété StringComparer directement parce que chaque propriété retourne une instance d'une classe anonyme qui est dérivée de la classe StringComparer. Par conséquent, le type de chaque valeur de propriété est StringComparer, qui est la classe de base de la classe anonyme et non le type de la classe anonyme même. Chaque propriété de la classe StringComparer retourne un objet StringComparer qui prend en charge les règles de casse et de comparaison prédéfinies.
ExempleL'exemple de code suivant illustre les propriétés et la méthode Create de la classe StringComparer. L'exemple illustre comment différents objets StringComparer trient trois versions de la lettre latine I.
' This code example demonstrates members of the System.StringComparer class. Imports System Imports System.Collections Imports System.Collections.Generic Imports System.Globalization Imports System.Threading Class Sample Public Shared Sub Main() ' Create a list of string. Dim list As New List(Of String) ' Get the tr-TR (Turkish-Turkey) culture. Dim turkish As New CultureInfo("tr-TR") ' Get the culture that is associated with the current thread. Dim thisCulture As CultureInfo = Thread.CurrentThread.CurrentCulture ' Get the standard StringComparers. Dim invCmp As StringComparer = StringComparer.InvariantCulture Dim invICCmp As StringComparer = StringComparer.InvariantCultureIgnoreCase Dim currCmp As StringComparer = StringComparer.CurrentCulture Dim currICCmp As StringComparer = StringComparer.CurrentCultureIgnoreCase Dim ordCmp As StringComparer = StringComparer.Ordinal Dim ordICCmp As StringComparer = StringComparer.OrdinalIgnoreCase ' Create a StringComparer that uses the Turkish culture and ignores case. Dim turkICComp As StringComparer = StringComparer.Create(turkish, True) ' Define three strings consisting of different versions of the letter I. ' LATIN CAPITAL LETTER I (U+0049) Dim capitalLetterI As String = "I" ' LATIN SMALL LETTER I (U+0069) Dim smallLetterI As String = "i" ' LATIN SMALL LETTER DOTLESS I (U+0131) Dim smallLetterDotlessI As String = "?" ' Add the three strings to the list. list.Add(capitalLetterI) list.Add(smallLetterI) list.Add(smallLetterDotlessI) ' Display the original list order. Display(list, "The original order of the list entries...") ' Sort the list using the invariant culture. list.Sort(invCmp) Display(list, "Invariant culture...") list.Sort(invICCmp) Display(list, "Invariant culture, ignore case...") ' Sort the list using the current culture. Console.WriteLine("The current culture is ""{0}"".", thisCulture.Name) list.Sort(currCmp) Display(list, "Current culture...") list.Sort(currICCmp) Display(list, "Current culture, ignore case...") ' Sort the list using the ordinal value of the character code points. list.Sort(ordCmp) Display(list, "Ordinal...") list.Sort(ordICCmp) Display(list, "Ordinal, ignore case...") ' Sort the list using the Turkish culture, which treats LATIN SMALL LETTER ' DOTLESS I differently than LATIN SMALL LETTER I. list.Sort(turkICComp) Display(list, "Turkish culture, ignore case...") End Sub 'Main Public Shared Sub Display(ByVal lst As List(Of String), ByVal title As String) Dim c As Char Dim s As String Dim codePoint As Integer Console.WriteLine(title) For Each s In lst c = s(0) codePoint = Convert.ToInt32(c) Console.WriteLine("0x{0:x}", codePoint) Next s Console.WriteLine() End Sub 'Display End Class 'Sample ' 'This code example produces the following results: ' 'The original order of the list entries... '0x49 '0x69 '0x131 ' 'Invariant culture... '0x69 '0x49 '0x131 ' 'Invariant culture, ignore case... '0x49 '0x69 '0x131 ' 'The current culture is "en-US". 'Current culture... '0x69 '0x49 '0x131 ' 'Current culture, ignore case... '0x49 '0x69 '0x131 ' 'Ordinal... '0x49 '0x69 '0x131 ' 'Ordinal, ignore case... '0x69 '0x49 '0x131 ' 'Turkish culture, ignore case... '0x131 '0x49 '0x69 '
// This example demonstrates members of the // System.StringComparer class. using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Threading; class Sample { public static void Main() { // Create a list of string. List<string> list = new List<string>(); // Get the tr-TR (Turkish-Turkey) culture. CultureInfo turkish = new CultureInfo("tr-TR"); // Get the culture that is associated with the current thread. CultureInfo thisCulture = Thread.CurrentThread.CurrentCulture; // Get the standard StringComparers. StringComparer invCmp = StringComparer.InvariantCulture; StringComparer invICCmp = StringComparer.InvariantCultureIgnoreCase; StringComparer currCmp = StringComparer.CurrentCulture; StringComparer currICCmp = StringComparer.CurrentCultureIgnoreCase; StringComparer ordCmp = StringComparer.Ordinal; StringComparer ordICCmp = StringComparer.OrdinalIgnoreCase; // Create a StringComparer that uses the Turkish culture and ignores case. StringComparer turkICComp = StringComparer.Create(turkish, true); // Define three strings consisting of different versions of the letter I. // LATIN CAPITAL LETTER I (U+0049) string capitalLetterI = "I"; // LATIN SMALL LETTER I (U+0069) string smallLetterI = "i"; // LATIN SMALL LETTER DOTLESS I (U+0131) string smallLetterDotlessI = "\u0131"; // Add the three strings to the list. list.Add(capitalLetterI); list.Add(smallLetterI); list.Add(smallLetterDotlessI); // Display the original list order. Display(list, "The original order of the list entries..."); // Sort the list using the invariant culture. list.Sort(invCmp); Display(list, "Invariant culture..."); list.Sort(invICCmp); Display(list, "Invariant culture, ignore case..."); // Sort the list using the current culture. Console.WriteLine("The current culture is \"{0}\".", thisCulture.Name); list.Sort(currCmp); Display(list, "Current culture..."); list.Sort(currICCmp); Display(list, "Current culture, ignore case..."); // Sort the list using the ordinal value of the character code points. list.Sort(ordCmp); Display(list, "Ordinal..."); list.Sort(ordICCmp); Display(list, "Ordinal, ignore case..."); // Sort the list using the Turkish culture, which treats LATIN SMALL LETTER // DOTLESS I differently than LATIN SMALL LETTER I. list.Sort(turkICComp); Display(list, "Turkish culture, ignore case..."); } public static void Display(List<string> lst, string title) { Char c; int codePoint; Console.WriteLine(title); foreach (string s in lst) { c = s[0]; codePoint = Convert.ToInt32(c); Console.WriteLine("0x{0:x}", codePoint); } Console.WriteLine(); } } /* This code example produces the following results: The original order of the list entries... 0x49 0x69 0x131 Invariant culture... 0x69 0x49 0x131 Invariant culture, ignore case... 0x49 0x69 0x131 The current culture is "en-US". Current culture... 0x69 0x49 0x131 Current culture, ignore case... 0x49 0x69 0x131 Ordinal... 0x49 0x69 0x131 Ordinal, ignore case... 0x69 0x49 0x131 Turkish culture, ignore case... 0x131 0x49 0x69 */
// This example demonstrates members of the // System::StringComparer class. using namespace System; using namespace System::Collections; using namespace System::Collections::Generic; using namespace System::Globalization; using namespace System::Threading; void Display(List<String^>^ stringList, String^ title) { Char firstChar; int codePoint; Console::WriteLine(title); for each (String^ s in stringList) { firstChar = s[0]; codePoint = Convert::ToInt32(firstChar); Console::WriteLine("0x{0:x}", codePoint); } Console::WriteLine(); } int main() { // Create a list of string. List<String^>^ stringList = gcnew List<String^>(); // Get the tr-TR (Turkish-Turkey) culture. CultureInfo^ turkishCulture = gcnew CultureInfo("tr-TR"); // Get the culture that is associated with the current thread. CultureInfo^ currentCulture = Thread::CurrentThread->CurrentCulture; // Get the standard StringComparers. StringComparer^ invariant = StringComparer::InvariantCulture; StringComparer^ invariantIgnoreCase = StringComparer::InvariantCultureIgnoreCase; StringComparer^ current = StringComparer::CurrentCulture; StringComparer^ currentIgnoreCase = StringComparer::CurrentCultureIgnoreCase; StringComparer^ ordinal = StringComparer::Ordinal; StringComparer^ ordinalIgnoreCase = StringComparer::OrdinalIgnoreCase; // Create a StringComparer that uses the Turkish culture and ignores // case. StringComparer^ turkishIgnoreCase = StringComparer::Create(turkishCulture, true); // Define three strings consisting of different versions of the // letter I. LATIN CAPITAL LETTER I (U+0049) String^ capitalLetterI = "I"; // LATIN SMALL LETTER I (U+0069) String^ smallLetterI = "i"; // LATIN SMALL LETTER DOTLESS I (U+0131) String^ smallLetterDotlessI = L"\u0131"; // Add the three strings to the list. stringList->Add(capitalLetterI); stringList->Add(smallLetterI); stringList->Add(smallLetterDotlessI); // Display the original list order. Display(stringList, "The original order of the list entries..."); // Sort the list using the invariant culture. stringList->Sort(invariant); Display(stringList, "Invariant culture..."); stringList->Sort(invariantIgnoreCase); Display(stringList, "Invariant culture, ignore case..."); // Sort the list using the current culture. Console::WriteLine("The current culture is \"{0}\".", currentCulture->Name); stringList->Sort(current); Display(stringList, "Current culture..."); stringList->Sort(currentIgnoreCase); Display(stringList, "Current culture, ignore case..."); // Sort the list using the ordinal value of the character code points. stringList->Sort(ordinal); Display(stringList, "Ordinal..."); stringList->Sort(ordinalIgnoreCase); Display(stringList, "Ordinal, ignore case..."); // Sort the list using the Turkish culture, which treats LATIN SMALL // LETTER DOTLESS I differently than LATIN SMALL LETTER I. stringList->Sort(turkishIgnoreCase); Display(stringList, "Turkish culture, ignore case..."); } /* This code example produces the following results: The original order of the list entries... 0x49 0x69 0x131 Invariant culture... 0x69 0x49 0x131 Invariant culture, ignore case... 0x49 0x69 0x131 The current culture is "en-US". Current culture... 0x69 0x49 0x131 Current culture, ignore case... 0x49 0x69 0x131 Ordinal... 0x49 0x69 0x131 Ordinal, ignore case... 0x69 0x49 0x131 Turkish culture, ignore case... 0x131 0x49 0x69 */
Sécurité des threads
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ