Compartilhar via


CA1865-CA1867: use 'string.Method(char)' em vez de 'string.Method(string)' para cadeias de caracteres com um único char

Property Valor
ID da regra CA1865-CA1867
Título Use 'string.Method(char)' em vez de 'string.Method(string)' para cadeias de caracteres com um único char
Categoria Desempenho
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 CA1865 – como sugestão
CA1866 – como sugestão
CA1867 – não

Causa

string.Method(string) foi usado quando string.Method(char) estava disponível.

Os métodos de destino em string para essas regras:

  • StartsWith
  • EndsWith
  • IndexOf
  • LastIndexOf

A tabela a seguir resume as condições para cada uma das IDs das regras relacionadas.

ID do diagnóstico Descrição Correção do código disponível
CA1865 Aplica-se quando uma transformação segura pode ser executada automaticamente com uma correção de código. Sim
CA1866 Aplica-se quando não existe uma comparação especificada. Não
CA1867 Aplica-se a qualquer outra comparação de cadeias de caracteres não coberta pelas outras duas regras. Não

O CA1867 está desabilitado por padrão.

Descrição da regra

A sobrecarga que recebe um parâmetro char tem melhor desempenho do que a sobrecarga que recebe um parâmetro de cadeia de caracteres.

Como corrigir violações

Para corrigir uma violação, utilize a sobrecarga do parâmetro char em vez da sobrecarga do parâmetro cadeia de caracteres.

Considere o seguinte exemplo:

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith("I");
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I")
End Function

Esse código pode ser alterado para passar 'I' para StartsWith em vez da cadeia de caracteres "I".

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith('I');
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I"c)
End Function

Quando suprimir avisos

Suprima a violação dessa regra se você não estiver preocupado com o impacto no desempenho de chamar o método com uma cadeia de caracteres.

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

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.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none

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

Confira também