Durchführen kulturunabhängiger SchreibungsänderungenPerforming Culture-Insensitive Case Changes

Die Methoden String.ToUpper, String.ToLower, Char.ToUpper und Char.ToLower stellen Überladungen bereit, die keine Parameter akzeptieren.The String.ToUpper, String.ToLower, Char.ToUpper, and Char.ToLower methods provide overloads that do not accept any parameters. Standardmäßig führen diese Überladungen ohne Parameter die Schreibungsänderungen auf Basis des CultureInfo.CurrentCulture-Werts durch.By default, these overloads without parameters perform case changes based on the value of the CultureInfo.CurrentCulture. Die unter Berücksichtigung der Groß-/Kleinschreibung erzielten Ergebnisse variieren je nach Kultur.This produces case-sensitive results that can vary by culture. Um klar anzugeben, ob die Schreibungsänderungen kulturabhängig oder kulturunabhängig erfolgen sollen, empfiehlt sich die Verwendung der Überladungen dieser Methoden, für die explizit ein culture-Parameter festgelegt werden muss.To make it clear whether you want case changes to be culture-sensitive or culture-insensitive, you should use the overloads of these methods that require you to explicitly specify a culture parameter. Um kulturabhängige Schreibungsänderungen zu aktivieren, geben Sie CultureInfo.CurrentCulture für den culture-Parameter an.For culture-sensitive case changes, specify CultureInfo.CurrentCulture for the culture parameter. Um kulturunabhängige Schreibungsänderungen zu aktivieren, geben Sie CultureInfo.InvariantCulture für den culture-Parameter an.For culture-insensitive case changes, specify CultureInfo.InvariantCulture for the culture parameter.

Häufig werden Zeichenfolgen in eine Standardschreibweise konvertiert, um spätere Suchvorgänge zu vereinfachen.Often, strings are converted to a standard case to enable easier lookup later. Wenn Zeichenfolgen auf diese Weise verwendet werden, sollte CultureInfo.InvariantCulture für den culture-Parameter angegeben werden, da sich der Wert von Thread.CurrentCulture zwischen dem Zeitpunkt der Schreibungsänderung und dem Zeitpunkt des Suchvorgangs ändern kann.When strings are used in this way, you should specify CultureInfo.InvariantCulture for the culture parameter, because the value of Thread.CurrentCulture can potentially change between the time that the case is changed and the time that the lookup occurs.

Wenn darüber hinaus eine Sicherheitsentscheidung auf einer Änderung von Groß- und Kleinschreibung beruht, sollte die Operation kulturunabhängig sein, um sicherzustellen, dass das Ergebnis nicht durch den Wert von CultureInfo.CurrentCulture beeinflusst wird.If a security decision is based on a case change operation, the operation should be culture-insensitive to ensure that the result is not affected by the value of CultureInfo.CurrentCulture. Im Abschnitt „Zeichenfolgenvergleiche mit der aktuellen Kultur“ im Artikel Bewährte Methoden für die Verwendung von Zeichenfolgen in .NET finden Sie ein Beispiel, das veranschaulicht, wie kulturabhängige Zeichenfolgenoperationen zu inkonsistenten Ergebnissen führen können.See the "String Comparisons that Use the Current Culture" section of the Best Practices for Using Strings article for an example that demonstrates how culture-sensitive string operations can produce inconsistent results.

Verwenden der String.ToUpper-Methode und der String.ToLower-MethodeUsing the String.ToUpper and String.ToLower Methods

Aus Gründen der Übersichtlichkeit des Codes wird empfohlen, immer die Überladungen der String.ToUpper-Methode und der String.ToLower-Methode zu verwenden, bei denen ein culture-Parameter explizit angegeben werden kann.For code clarity, it is recommended that you always use overloads of the String.ToUpper and String.ToLower methods that allow you to specify a culture parameter explicitly. Mit dem folgenden Code wird z. B. nach einem Bezeichner gesucht.For example, the following code performs an identifier lookup. In der Standardeinstellung ist die key.ToLower-Operation kulturabhängig, jedoch wird dieses Verhalten beim Lesen des Codes nicht deutlich.The key.ToLower operation is culture-sensitive by default, but this behavior is not clear from reading the code.

BeispielExample

Shared Function LookupKey(key As String) As Object  
   Return internalHashtable(key.ToLower())  
End Function  
static object LookupKey(string key)   
{  
    return internalHashtable[key.ToLower()];  
}  

Wenn Sie eine kulturunabhängige key.ToLower-Operation ausführen möchten, muss das vorige Beispiel so geändert werden, dass beim Ändern der Schreibweise CultureInfo.InvariantCulture explizit verwendet wird:If you want the key.ToLower operation to be culture-insensitive, you should change the preceding example as follows to explicitly use the CultureInfo.InvariantCulture when changing the case.

Shared Function LookupKey(key As String) As Object  
    Return internalHashtable(key.ToLower(CultureInfo.InvariantCulture))  
End Function  
static object LookupKey(string key)   
{  
    return internalHashtable[key.ToLower(CultureInfo.InvariantCulture)];  
}  

Verwenden der Char.ToUpper-Methode und der Char.ToLower-MethodeUsing the Char.ToUpper and Char.ToLower Methods

Obwohl die Char.ToUpper-Methode und die Char.ToLower-Methode über die gleichen Eigenschaften wie die String.ToUpper-Methode und die String.ToLower-Methode verfügen, sind nur die Kulturen Türkisch (Türkei) und Aserbaidschanisch (lateinisch, Aserbaidschan) betroffen.Although the Char.ToUpper and Char.ToLower methods have the same characteristics as the String.ToUpper and String.ToLower methods, the only cultures that are affected are Turkish (Turkey) and Azerbaijani (Latin, Azerbaijan). Hierbei handelt es sich um die beiden einzigen Kulturen mit Unterschieden in der Groß-/Kleinschreibung für ein einzelnes Zeichen.These are the only two cultures with single-character casing differences. Weitere Informationen über diese Besonderheit bei der Groß-/Kleinschreibung finden Sie im Abschnitt "Groß-/Kleinschreibung" im Thema zur String-Klasse.For more details about this unique case mapping, see the "Casing" section in the String class topic. Aus Gründen der Übersichtlichkeit des Codes empfiehlt es sich, immer die Überladungen dieser Methoden zu verwenden, bei denen ein culture-Parameter explizit festgelegt werden kann.For code clarity and to ensure consistent results, it is recommended that you always use the overloads of these methods that allow you to explicitly specify a culture parameter.

Siehe auchSee also