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