CA1311: Especificar uma cultura ou usar uma versão invariável

Property Valor
ID da regra CA1311
Título Especificar uma cultura ou usar uma versão invariável
Categoria Globalização
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Não

Causa

Uma chamada é feita para String.ToUpper() ou String.ToLower() sem especificar uma cultura.

Descrição da regra

Especifique uma cultura ou use uma cultura invariável para evitar a dependência implícita da cultura atual ao chamar ToUpper ou ToLower. O uso de uma cultura invariável gera resultados consistentes, independentemente da cultura de um aplicativo.

Como corrigir violações

Em vez de chamar os métodos String.ToUpper() ou String.ToLower() sem parâmetros, chame ToUpper(CultureInfo), ToUpperInvariant(), ToLower(CultureInfo), ou ToLowerInvariant().

Exemplo

O seguinte snippet de código mostra uma violação da regra CA1311:

string s = "hello";
s = s.ToLower();
Dim s As String = "hello"
s.ToLower()

O seguinte snippet de código conserta a violação:

string s = "hello";
s = s.ToLowerInvariant();
Dim s As String = "hello"
s.ToLowerInvariant()

Quando suprimir avisos

É seguro suprimir um aviso dessa regra se você tem certeza de que Thread.CurrentCulture nunca mudará.

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 CA1311
// The code that's violating the rule is on this line.
#pragma warning restore CA1311

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.CA1311.severity = none

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

Confira também