CA1309: Usar StringComparison ordinal
Property | Valor |
---|---|
ID da regra | CA1309 |
Título | Usar StringComparison ordinal |
Categoria | Globalização |
Correção interruptiva ou sem interrupção | Sem interrupção |
Habilitado por padrão no .NET 8 | Não |
Causa
Uma operação de comparação de cadeia de caracteres não linguística não define o parâmetro StringComparison como Ordinal ou OrdinalIgnoreCase.
Descrição da regra
Muitas operações de cadeia de caracteres, principalmente os métodos System.String.Compare e System.String.Equals, agora fornecem uma sobrecarga que aceita um valor de enumeração System.StringComparison como um parâmetro.
Quando você especifica StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase, a comparação de cadeias de caracteres não é linguística. Ou seja, os recursos específicos da linguagem natural são ignorados quando são tomadas decisões de comparação. Ignorar recursos de linguagem natural significa que as decisões são baseadas em comparações de bytes simples e não em tabelas de equivalências ou uso de maiúsculas parametrizadas pela cultura. Assim, ao definir explicitamente o parâmetro como StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase, o código normalmente ganha velocidade, fica mais correto 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 enumeração System.StringComparison 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-alvo local limitado ou quando a semântica da cultura atual deve ser usada.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar 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 em um arquivo, uma pasta ou um projeto, defina a severidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1309.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.