Partilhar via


Realização de alterações de maiúsculas com diferenciação de cultura

O String.ToUpper, String.ToLower, Char.ToUpper, e Char.ToLower métodos fornecem sobrecargas que não aceitam parâmetros. Por padrão, essas sobrecargas sem parâmetros realizar alterações de maiúsculas com base no valor da CultureInfo.CurrentCulture. Isso produz resultados diferencia maiúsculas de minúsculas que podem variar por cultura. Para deixar claro se quiser que as alterações casos seja cultura ou a diferenciação de cultura, você deve usar as sobrecargas dos métodos a seguir que exigem que você especificar explicitamente um culture parâmetro. Para alterações de casos de cultura, especifique CultureInfo.CurrentCulture para o culture parâmetro. Para alterações de maiúsculas com diferenciação de cultura, especifique CultureInfo.InvariantCulture para o culture parâmetro.

Freqüentemente, seqüências de caracteres são convertidas em um caso padrão para habilitar a pesquisa mais fácil posteriormente. Quando as seqüências são usadas dessa forma, você deve especificar CultureInfo.InvariantCulture para o culture parâmetro, porque o valor de Thread.CurrentCulture pode potencialmente alterar entre o momento em que o caso é alterado e o momento em que a pesquisa ocorre.

Se uma decisão de segurança se baseia em uma operação de alteração de maiúsculas, a operação deve ser diferenciação de cultura para garantir que o resultado não é afetado pelo valor do CultureInfo.CurrentCulture. Consulte mapeamentos de caso personalizada e regras de classificação para obter um exemplo que demonstra a seqüência de caracteres como cultura operações podem produzir resultados inconsistentes.

Usando a string. ToUpper e os métodos de string. ToLower

Para maior clareza do código, é recomendável que você use sempre sobrecargas da String.ToUpper e String.ToLower métodos que permitem que você especifique um culture parâmetro explicitamente. Por exemplo, o código a seguir executa uma pesquisa de identificador. O key.ToLower operação é sensível à cultura por padrão, mas esse comportamento não está claro depois de ler o código.

Exemplo

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

Se você desejar que o key.ToLower operação seja a diferenciação de cultura, você deve alterar o exemplo anterior da seguinte maneira para usar explicitamente a CultureInfo.InvariantCulture ao alterar o caso.

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

Usando os métodos de Char.ToLower e o Char.ToUpper

Embora o Char.ToUpper e Char.ToLower métodos têm as mesmas características como o String.ToUpper e String.ToLower os métodos, as culturas apenas afetados são Turco (Turquia) e Azeri (latino, Azerbaijão). Essas são as culturas apenas duas com diferenças de maiúsculas e minúsculas de caractere único. Para obter mais detalhes sobre esse mapeamento de ocorrência exclusivo, consulte mapeamentos de caso personalizada e regras de classificação. Por motivos de clareza do código e garantir resultados consistentes, é recomendável que você use sempre as sobrecargas desses métodos que permitem que você especificar explicitamente um culture parâmetro.

Consulte também

Referência

String.ToUpper

String.ToLower

Char.ToUpper

Char.ToLower

Outros recursos

Executar operações de cadeia de caracteres com diferenciação de cultura