CA1309: Use ordinal StringComparison

Propriedade valor
ID da regra CA1309
Cargo Usar ordinal StringComparison
Categoria Globalização
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Não

Causa

Uma operação de comparação de cadeia de caracteres que não é linguística não define o StringComparison parâmetro como Ordinal ou OrdinalIgnoreCase.

Descrição da regra

Muitas operações de cadeia de caracteres, principalmente os System.String.Compare métodos e System.String.Equals , agora fornecem uma sobrecarga que aceita um System.StringComparison valor de enumeração como parâmetro.

Quando você especifica StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase, a comparação de cadeia de caracteres não é linguística. Ou seja, as características que são específicas da linguagem natural são ignoradas quando as decisões de comparação são tomadas. Ignorar os recursos de linguagem natural significa que as decisões são baseadas em comparações simples de bytes e não em tabelas de caixa ou equivalência que são parametrizadas pela cultura. Como resultado, definindo explicitamente o parâmetro para StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase, seu código geralmente ganha velocidade, aumenta a correção e se torna mais confiável.

Como corrigir violações

Para corrigir uma violação dessa regra, altere o método de comparação de cadeia de caracteres para uma sobrecarga que aceite a System.StringComparison enumeração como um parâmetro e especifique Ordinal ou OrdinalIgnoreCase. Por exemplo, altere String.Compare(str1, str2) para String.Compare(str1, str2, StringComparison.Ordinal).

Quando suprimir avisos

É seguro suprimir um aviso dessa regra quando a biblioteca ou o aplicativo se destina a um público local limitado ou quando a semântica da cultura atual deve ser usada.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

#pragma warning disable CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309

Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA1309.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também