CompareInfo-Klasse

Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.

Konventionen für das Vergleichen und Sortieren von Daten unterscheiden sich je nach Kultur. Die Sortierreihenfolge kann beispielsweise auf der Phonetik oder der visuellen Darstellung von Zeichen basieren. In ostasiatischen Sprachen werden Zeichen anhand der Anzahl der Striche und der Radikale der Ideogramme sortiert. Die Sortierung hängt außerdem von der Reihenfolge ab, die das Alphabet der jeweiligen Sprache bzw. Kultur aufweist. Im Dänischen gibt es beispielsweise das Zeichen "Æ", das im Alphabet nach dem Zeichen "Z" einsortiert ist. Darüber hinaus kann bei Vergleichen zwischen Groß- und Kleinschreibung unterschieden werden, und auch die Regeln für Groß-/Kleinschreibung können sich je nach Kultur unterscheiden. Die Klasse CompareInfo ist dafür verantwortlich, diese kulturabhängigen Zeichenfolgenvergleichsdaten zu verwalten und kulturabhängige Zeichenfolgenvorgänge auszuführen.

In der Regel müssen Sie ein CompareInfo-Objekt nicht direkt instanziieren. Das liegt daran, dass ein Objekt implizit von allen nicht ordinalen Zeichenfolgenvergleichsvorgängen verwendet wird, einschließlich Aufrufe der Methode String.Compare. Wenn Sie jedoch ein CompareInfo-Objekt abrufen möchten, ist dies wie folgt möglich:

  • Durch Abrufen des Werts der Eigenschaft CultureInfo.CompareInfo für eine bestimmte Kultur

  • Durch Aufrufen der statischen Methode GetCompareInfo mit einem Kulturnamen. Dies ermöglicht den spät gebundenen Zugriff auf ein CompareInfo-Objekt.

Ignorierte Suchwerte

Zeichensätze enthalten ignorierbare Zeichen, d. h. Zeichen, die bei der Durchführung eines linguistischen oder kulturabhängigen Vergleichs nicht berücksichtigt werden. Vergleichsmethoden wie IndexOf und LastIndexOf berücksichtigen solche Zeichen nicht, wenn sie einen kulturabhängigen Vergleich durchführen. Zu den ignorierbare Zeichen gehören folgende:

  • String.Empty. Kulturabhängige Vergleichsmethoden finden immer eine leere Zeichenfolge am Anfang (Index 0) der durchsuchten Zeichenfolge.

  • Ein Zeichen oder eine Zeichenfolge, die aus Zeichen mit Codepunkten besteht, die im Vorgang aufgrund von Vergleichsoptionen nicht berücksichtigt werden. Insbesondere die Optionen CompareOptions.IgnoreNonSpace und CompareOptions.IgnoreSymbols führen zu Suchvorgängen, bei denen Symbole und kombinierte Zeichen ohne Zwischenraum ignoriert werden.

  • Eine Zeichenfolge mit Codepunkten, die keine sprachliche Bedeutung haben. Beispielsweise wird ein bedingter Bindestrich (U+00AD) in einem kulturabhängigen Zeichenfolgenvergleich immer ignoriert.

Sicherheitshinweise

Wenn eine Sicherheitsentscheidung von einem Zeichenfolgenvergleich oder einer Änderung von Groß-/Kleinschreibung abhängt, sollten Sie die Eigenschaft InvariantCulture verwenden. So können Sie sicherstellen, dass das Verhalten konsistent ist, unabhängig von den Kultureinstellungen des Betriebssystems.

Hinweis

Sie sollten nach Möglichkeit Zeichenfolgenvergleichsmethoden verwenden, die über einen Parameter vom Typ CompareOptions verfügen, um die Art des erwarteten Vergleichs anzugeben. Verwenden Sie im Allgemeinen linguistische Optionen (unter Verwendung der aktuellen Kultur), um Zeichenfolgen zu vergleichen, die auf der Benutzeroberfläche angezeigt werden, und geben Sie Ordinal oder OrdinalIgnoreCase für Sicherheitsvergleiche an.