Sortieren mit Kulturen

Aktualisiert: November 2007

Das Sortieren von Zeichenfolgen hängt von Sortierregeln ab, die zum Vergleichen von Zeichenfolgenpaaren und mittelbar zu ihrem Anordnen in sortierter Reihenfolge verwendet werden. Wenn die Anwendung eine Vergleichsoperation ausführt, kann die Sortierregel entweder explizit mit einem oder mehreren CompareOptions-Enumerationswerten oder implizit mit einem CultureInfo-Objekt angegeben werden.

.NET Framework unterstützt Wort-, Zeichenfolgen- und Ordinalsortierregeln. Bei der Wortsortierung wird ein kulturabhängiger Vergleich von Zeichenfolgen ausgeführt, in dem bestimmten nicht alphanumerischen Unicode-Zeichen ggf. eine bestimmte Gewichtung zugewiesen wird. Beispielsweise wird dem Bindestrich ("-") möglicherweise eine sehr geringe Gewichtung zugewiesen, sodass "coop" und "co-op" in einer sortierten Liste nebeneinander auftreten. Eine Zeichenfolgensortierung ähnelt einer Wortsortierung mit dem Unterschied, dass es keine Sonderfälle gibt und alle nicht alphanumerischen Symbole vor allen alphanumerischen Unicode-Zeichen eingeordnet werden. Eine Ordinalsortierung vergleicht Zeichenfolgen anhand des numerischen Werts jedes Char-Objekts in der Zeichenfolge. Weitere Informationen über Wort-, Zeichenfolgen- und Ordinalsortierregeln finden Sie unter CompareOptions.

In .NET Framework werden Zeichenfolgen mit der String-Klasse und jedes Unicode-Zeichen in einer Zeichenfolge mit einer Char-Struktur dargestellt. Kulturen werden mit der CultureInfo-Klasse dargestellt, und Informationen über einen Vergleich mit der CompareInfo-Klasse. Die String-Klasse und die CompareInfo-Klasse sind die primären Quellen für Vergleichsmethoden. Wenn nichts anderes angegeben wird, verwenden Vergleichsoperationen die dem aktuellen Thread zugeordnete Kultur.

Kriterien und Anweisungen für den Vergleich mit Kulturen

Bestimmen Sie anhand der folgenden Richtlinien, ob die Anwendung einen kulturabhängigen Vergleich durchführen soll.

  • Wenn die Anwendung eine Sortieroperation erfordert, die von einer bestimmten Kultur abhängig ist, sollte eine Vergleichsmethode verwendet werden, die ein CultureInfo-Objekt oder einen CompareOptions-Enumerationsparameter angibt.

  • Wenn die Anwendung keine Sortieroperation erfordert, die sich auf eine bestimmte Kultur bezieht, sollte die invariante Kultur angegeben oder eine Ordinalsortierung verwendet werden. Eine Anwendung verwendet z. B. einen Ordinalvergleich, um die Namen von Dateien, Mutexen und benannten Pipes zu sortieren. Weitere Informationen über die invariante Kultur finden Sie unter Verwenden der InvariantCulture-Eigenschaft. Weitere Informationen über die Ordinalsortierung finden Sie unter Normalisierung und Sortierung.

  • Wenn in der Anwendung sicherheitsrelevante Entscheidungen auf Grundlage der Sortierung von Zeichenfolgen erfolgen, verwenden Sie eine Ordinalsortierung.

Wichtiger Hinweis:

Die früher ausgegebene Empfehlung, für Vergleichsoperationen, die in sicherheitsrelevanten Entscheidungen verwendet werden, wurde zurückgezogen. Die Anwendung sollte stattdessen einen Ordinalvergleich verwenden.

Siehe auch

Konzepte

Verwenden der InvariantCulture-Eigenschaft

Normalisierung und Sortierung