Esecuzione di modifiche di maiuscole e minuscole indipendenti dalle impostazioni culturaPerforming Culture-Insensitive Case Changes

I metodi String.ToUpper, String.ToLower, Char.ToUpper, e Char.ToLower forniscono overload che non accettano parametri.The String.ToUpper, String.ToLower, Char.ToUpper, and Char.ToLower methods provide overloads that do not accept any parameters. Per impostazione predefinita, questi overload senza parametri eseguono modifiche di maiuscole e minuscole in base al valore di CultureInfo.CurrentCulture.By default, these overloads without parameters perform case changes based on the value of the CultureInfo.CurrentCulture. Ciò produce risultati con distinzione tra maiuscole e minuscole che possono variare in base alle impostazioni cultura.This produces case-sensitive results that can vary by culture. Per definire modifiche di maiuscole e minuscole dipendenti o meno dalle impostazioni cultura, è consigliabile usare gli overload di questi metodi che richiedono di specificare in modo esplicito un parametro culture.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. Per definire modifiche di maiuscole e minuscole dipendenti dalle impostazioni cultura, specificare CultureInfo.CurrentCulture per il parametro culture.For culture-sensitive case changes, specify CultureInfo.CurrentCulture for the culture parameter. Per definire modifiche indipendenti dalle impostazioni cultura, specificare CultureInfo.InvariantCulture per il parametro culture.For culture-insensitive case changes, specify CultureInfo.InvariantCulture for the culture parameter.

La combinazione di maiuscole e minuscole nelle stringhe viene spesso convertita in base a un criterio standard per abilitare e semplificare la ricerca in un secondo momento.Often, strings are converted to a standard case to enable easier lookup later. Quando le stringhe vengono usate in questo modo, è necessario specificare CultureInfo.InvariantCulture per il parametro culture, perché è possibile che il valore di Thread.CurrentCulture vari tra il momento in cui si verifica la modifica di maiuscole e minuscole e il momento in cui viene eseguita la ricerca.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.

Se una decisione relativa alla sicurezza è basata su un'operazione di modifica di maiuscole e minuscole, è necessario che l'operazione sia indipendente dalle impostazioni cultura in modo che il risultato non venga influenzato dal valore di CultureInfo.CurrentCulture.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. Per un esempio in cui viene illustrato il modo in cui le operazioni su stringhe dipendenti dalle impostazioni cultura possono comportare risultati non coerenti, vedere la sezione relativa ai confronti di stringhe in cui vengono utilizzate le impostazioni cultura correnti nell'articolo Best Practices for Using Strings.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.

Uso dei metodi String.ToUpper e String.ToLowerUsing the String.ToUpper and String.ToLower Methods

Per ottenere una maggiore chiarezza del codice, è consigliabile usare sempre gli overload dei metodi String.ToUpper e String.ToLower, che consentono di specificare un parametro culture in modo esplicito.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. Nel codice seguente, ad esempio, viene eseguita una ricerca dell'identificatore.For example, the following code performs an identifier lookup. L'operazione key.ToLower non dipende dalle impostazioni cultura per impostazione predefinita, ma questo comportamento non è evidente da una lettura del codice.The key.ToLower operation is culture-sensitive by default, but this behavior is not clear from reading the code.

EsempioExample

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

Se si desidera che l'operazione key.ToLower non dipenda dalle impostazioni cultura, è necessario modificare l'esempio precedente come indicato di seguito per usare in modo esplicito CultureInfo.InvariantCulture in caso di modifica di maiuscole/minuscole.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)];  
}  

Uso dei metodi Char.ToUpper e Char.ToLowerUsing the Char.ToUpper and Char.ToLower Methods

Sebbene i metodi Char.ToUpper e Char.ToLower abbiano le stesse caratteristiche dei metodi String.ToUpper e String.ToLower, le uniche impostazioni cultura su cui hanno effetto sono Turco (Turchia) e Azero (alfabeto latino, Azerbaigian).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). Queste sono le uniche due impostazioni cultura con differenze di maiuscole e minuscole a carattere singolo.These are the only two cultures with single-character casing differences. Per informazioni dettagliate su questo mapping di maiuscole e minuscole univoco, vedere la sezione "Maiuscole e minuscole" dell'argomento della classe String.For more details about this unique case mapping, see the "Casing" section in the String class topic. Per maggiore chiarezza del codice e per garantire risultati coerenti, è consigliabile usare sempre gli overload di questi metodi che consentono di specificare in modo esplicito un parametro culture.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.

Vedere ancheSee Also

String.ToUpper
String.ToLower
Char.ToUpper
Char.ToLower
Esecuzione di operazioni sulle stringhe indipendenti dalle impostazioni culturaPerforming Culture-Insensitive String Operations