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.