Compartilhar via


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 10 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.

Confira também