Esecuzione di modifiche di maiuscole e minuscole indipendenti dalla lingua

I metodi String.ToUpper, String.ToLower, Char.ToUpper e Char.ToLower forniscono overload che non accettano parametri. Per impostazione predefinita, questi overload senza parametri eseguono modifiche delle lettere maiuscole e minuscole in base al valore di CultureInfo.CurrentCulture. Si ottengono così risultati con distinzione tra maiuscole e minuscole che possono variare in base alla lingua Per indicare chiaramente se si desidera eseguire modifiche delle lettere maiuscole e minuscole dipendenti o indipendenti dalla lingua, è opportuno utilizzare gli overload di questi metodi che richiedono la specifica esplicita di un parametro culture. Per modifiche delle lettere maiuscole e minuscole dipendenti dalla lingua, specificare CultureInfo.CurrentCulture per il parametro culture. Per modifiche delle lettere maiuscole e minuscole indipendenti dalla lingua, specificare CultureInfo.InvariantCulture per il parametro culture.

Le stringhe vengono spesso convertite in una combinazione di maiuscole e minuscole standard per semplificare successivamente la ricerca. Quando le stringhe vengono utilizzate in questo modo, per il parametro culture è opportuno specificare CultureInfo.InvariantCulture, poiché è possibile che vengano apportate modifiche al valore di Thread.CurrentCulture tra il momento in cui vengono modificate le lettere maiuscole e minuscole e il momento in cui viene eseguita la ricerca.

Se una decisione relativa alla sicurezza è basata sul risultato di una modifica di maiuscole e minuscole, è necessario che l'operazione sia indipendente dalla lingua affinché il risultato non sia influenzato dal valore di CultureInfo.CurrentCulture. Per un esempio in cui viene illustrato come le operazioni su stringhe dipendenti dalla lingua possono provocare risultati incoerenti, vedere Regole di ordinamento e mapping di maiuscole e minuscole personalizzati.

Utilizzo dei metodi String.ToUpper e String.ToLower

Per una maggiore chiarezza del codice, è consigliabile utilizzare sempre overload di String.ToUpper e String.ToLower che consentono di specificare in modo esplicito un parametro culture. Nel codice riportato di seguito, ad esempio, viene eseguita una ricerca di identificatori. Per impostazione predefinita, l'operazione key.ToLower è dipendente dalla lingua, tuttavia questo comportamento non risulta in modo evidente dalla lettura del codice.

Esempio

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 rendere l'operazione key.ToLower indipendente dalla lingua, è opportuno modificare l'esempio precedente come riportato di seguito, in modo da utilizzare in modo esplicito CultureInfo.InvariantCulture nella modifica delle lettere maiuscole e minuscole.

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)];
}

Utilizzo dei metodi Char.ToUpper e Char.ToLower

Sebbene dispongano delle stesse caratteristiche di String.ToUpper e String.ToLower, i metodi Char.ToUpper e Char.ToLower influiscono esclusivamente sulle lingue tr-TR (turco, Turchia) e az-Latn-AZ (azero, Azerbaijan, alfabeto latino), poiché costituiscono le uniche due lingue con differenze tra lettere maiuscole e minuscole relative a singoli caratteri. Per informazioni dettagliate su questo esclusivo mapping di maiuscole e minuscole, vedere Regole di ordinamento e mapping di maiuscole e minuscole personalizzati. Per una maggiore chiarezza del codice e per avere la garanzia di risultati coerenti, utilizzare sempre gli overload di questi metodi che consentono di specificare in modo esplicito un parametro culture.

Vedere anche

Riferimenti

String.ToUpper Method
String.ToLower Method
Char.ToUpper Method
Char.ToLower Method

Altre risorse

Esecuzione di operazioni sulle stringhe indipendenti dalla lingua