Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os String.ToUppermétodos , String.ToLower, Char.ToUpper, e Char.ToLower fornecem sobrecargas que não aceitam quaisquer parâmetros. Por defeito, estas sobrecargas sem parâmetros realizam alterações de caso com base no valor do CultureInfo.CurrentCulture. Isto produz resultados sensíveis ao caso que podem variar consoante a cultura. Para deixar claro se queres que as alterações de caso sejam sensíveis ou insensíveis à cultura, deves usar as sobrecargas destes métodos que exigem que especifiques explicitamente um culture parâmetro. Para alterações de casos sensíveis à cultura, especifique CultureInfo.CurrentCulture para o culture parâmetro. Para alterações de casos insensíveis à cultura, especifique CultureInfo.InvariantCulture para o culture parâmetro.
Frequentemente, as cadeias são convertidas para um caso padrão para facilitar a consulta mais tarde. Quando as strings são usadas desta forma, deve especificar CultureInfo.InvariantCulture para o culture parâmetro, porque o valor de Thread.CurrentCulture pode potencialmente mudar entre o momento em que o caso é alterado e o momento em que ocorre a consulta.
Se uma decisão de segurança se basear numa operação de mudança de caso, a operação deve ser insensível à cultura para garantir que o resultado não seja afetado pelo valor de CultureInfo.CurrentCulture. Consulte a secção "Comparações de Strings que Utilizam a Cultura Atual" do artigo Best Practices for Using Strings para um exemplo que demonstra como operações de strings sensíveis à cultura podem produzir resultados inconsistentes.
String.ToUpper e String.ToLower
Para maior clareza no código, recomenda-se que utilize sempre sobrecargas dos métodos String.ToUpper e String.ToLower que permitam especificar uma cultura de forma explícita. Por exemplo, o código seguinte realiza uma pesquisa de identificador. A operação key.ToLower é culturalmente sensível por padrão, mas este comportamento não é evidente ao 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 quiser que a key.ToLower operação seja insensível à cultura, altere o exemplo anterior da seguinte forma para usar CultureInfo.InvariantCulture explicitamente 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)];
}
Char.ToUpper e Char.ToLower
Embora os Char.ToUpper e os Char.ToLower tenham as mesmas características que os String.ToUpper e os String.ToLower, as únicas culturas afetadas são turca (Turquia) e azerbaijana (Latino, Azerbaijão). Estas são as únicas duas culturas com diferenças de carácter único. Para mais detalhes sobre este mapeamento de casos único, consulte a secção "Casing" na String documentação da classe. Para clareza do código e garantir resultados consistentes, recomenda-se que utilize sempre as sobrecargas destes métodos que aceitam um CultureInfo parâmetro.