War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern

StringComparer-Klasse

Stellt einen Zeichenfolgenvergleichsvorgang dar, der bestimmte Regeln zur Groß- und Kleinschreibung und kulturbasierte bzw. Ordinalvergleichsregeln verwendet.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class StringComparer : 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>
Nicht zutreffend.

Ein von der StringComparer-Klasse abgeleitetes Objekt enthält zeichenfolgenbasierte Vergleiche, Gleichheit und Hashcodevorgänge, die sowohl Regeln zur Groß- und Kleinschreibung als auch kulturspezifische Vergleichsregeln berücksichtigen. Sie können die StringComparer-Klasse verwenden, um einen typspezifischen Vergleich zu erstellen, um die Elemente in einer generischen Auflistung zu sortieren. Klassen wie Hashtable, Dictionary, SortedList und SortedList verwenden die StringComparer-Klasse zum Sortieren.

Je nach Definition kann ein durch die StringComparer-Klasse dargestellter Vergleichsvorgang zwischen Groß- und Kleinschreibung unterscheiden oder nicht und entweder nach Wörtern (kulturabhängig) oder nach Ordnungszahlen (nicht kulturabhängig) vergleichen. Weitere Informationen über Vergleichsregeln nach Wörtern und Ordnungszahlen finden Sie unter System.Globalization.CompareOptions.

Implementierte Eigenschaften

Das Verwenden der StringComparer-Klasseneigenschaften erscheint auf den ersten Blick verwirrend und teilweise widersprüchlich. Die StringComparer-Klasse wird abstract deklariert (MustInherit in Visual Basic), das heißt, ihre Member können nur für ein Objekt einer Klasse aufgerufen werden, die von der StringComparer-Klasse abgeleitet wurde. Der vermeintliche Widerspruch liegt darin, dass jede Eigenschaft der StringComparer-Klasse static deklariert wird (Shared in Visual Basic), das heißt, die Eigenschaft kann aufgerufen werden, ohne zuerst eine abgeleitete Klasse zu erstellen.

Sie können eine StringComparer-Eigenschaft direkt aufrufen, weil jede Eigenschaft tatsächlich eine Instanz einer anonymen Klasse zurückgibt, die von der StringComparer-Klasse abgeleitet wurde. Der Typ für jeden Eigenschaftenwert ist daher StringComparer, das heißt, nicht der Typ der anonymen Klasse selbst, sondern die Basisklasse der anonymen Klasse. Jede StringComparer-Klasseneigenschaft gibt ein StringComparer-Objekt zurück, das vordefinierte Regeln zur Groß- und Kleinschreibung und für Vergleiche unterstützt.

Im folgenden Codebeispiel werden die Eigenschaften und die Create-Methode der StringComparer-Klasse veranschaulicht. Im Beispiel wird veranschaulicht, wie verschiedene StringComparer-Objekte drei Versionen des lateinischen Buchstaben I sortieren.

// 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

*/

System.Object
  System.StringComparer

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 wird unter Windows Vista, Microsoft Windows XP SP2 und Windows Server 2003 SP1 unterstützt.

.NET Framework

Unterstützt in: 3.0, 2.0

.NET Compact Framework

Unterstützt in: 2.0

XNA Framework

Unterstützt in: 1.0
Anzeigen:
© 2015 Microsoft