Sortieren mit Kulturen
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 einer Wortsortierung wird ein kulturabhängiger Vergleich von Zeichenfolgen durchgeführt, bei dem bestimmten nicht alphanumerischen Unicode-Zeichen u. U. bestimmte Gewichtungen zugeordnet sind. Beispielsweise wird dem Bindestrich ("-") ggf. eine sehr geringe Gewichtung zugeordnet, sodass "coop" und "co-op" in einer sortierten Liste nebeneinander angezeigt werden. 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.
Wichtig |
---|
Die früher ausgegebene Empfehlung, für Vergleichsoperationen, die in sicherheitsrelevanten Entscheidungen verwendet werden, wurde zurückgezogen.Die Anwendung sollte stattdessen einen Ordinalvergleich verwenden. |