Classe CompareInfo
Este artigo fornece observações complementares à documentação de referência para essa API.
As convenções para comparar e classificar dados variam de cultura para cultura. Por exemplo, a ordem de classificação pode ser baseada em fonética ou na representação visual de caracteres. Nos idiomas do leste asiático, os caracteres são ordenados pelo traço e pelo radical dos ideogramas. A classificação também depende da ordem em que os idiomas e culturas usam para o alfabeto. Por exemplo, a língua dinamarquesa tem um caractere "Æ" que é ordenado após a letra "Z" no alfabeto. Além disso, as comparações podem diferenciar ou não maiúsculas de minúsculas, e as regras de capitalização também podem variar de acordo com a cultura. A classe CompareInfo é responsável por manter esses dados de comparação de cadeia de caracteres sensíveis à cultura e executar operações de cadeia de caracteres sensíveis à cultura.
Normalmente, você não precisa instanciar um objeto CompareInfo diretamente, pois um é usado implicitamente em todas as operações de comparação de cadeia de caracteres não ordinais, incluindo chamadas ao método String.Compare. No entanto, se você quiser recuperar um objeto CompareInfo, poderá fazê-lo de uma destas maneiras:
Recuperando o valor da propriedade CultureInfo.CompareInfo para uma cultura específica.
Chamando o método GetCompareInfo estático com um nome de cultura. Isso permite o acesso tardio a um objeto CompareInfo.
Valores de pesquisa ignorados
Conjuntos de caracteres incluem caracteres ignoráveis, que são caracteres que não são considerados ao durante a realização de uma comparação linguística ou sensível à cultura. Métodos de comparação como IndexOf e LastIndexOf não consideram esses caracteres quando executam uma comparação sensível à cultura. Os caracteres ignoráveis incluem:
String.Empty. Os métodos de comparação sensíveis à cultura sempre encontrarão uma cadeia de caracteres vazia no início (índice zero) da cadeia de caracteres que está sendo pesquisada.
Um caractere ou cadeia de caracteres que consiste em caracteres com pontos de código que não são considerados na operação devido às opções de comparação. Em particular, as opções CompareOptions.IgnoreNonSpace e CompareOptions.IgnoreSymbols produzem pesquisas nas quais símbolos e caracteres de combinação sem espaçamento são ignorados.
Uma cadeia de caracteres com pontos de código que não têm nenhum significado linguístico. Por exemplo, um hífen condicional (U+00AD) é sempre ignorado em uma comparação de cadeia de caracteres sensível à cultura.
Considerações de segurança
Se uma decisão de segurança depender de uma comparação de cadeia de caracteres ou de uma alteração de maiúsculas e minúsculas, você deverá usar a propriedade InvariantCulture para garantir que o comportamento seja consistente, independentemente das configurações de cultura do sistema operacional.
Observação
Quando possível, você deve usar métodos de comparação de cadeia de caracteres que têm um parâmetro de tipo CompareOptions para especificar o tipo de comparação esperado. Como regra geral, use opções linguísticas (usando a cultura atual) para comparar cadeias de caracteres exibidas na interface do usuário e especificar Ordinal ou OrdinalIgnoreCase para comparações de segurança.