Partilhar via


CA1865-CA1867: Use 'string. Method(char)' em vez de 'string. Method(string)' para string com char único

Property valor
ID da regra CA1865-CA1867
Título Use 'string. Method(char)' em vez de 'string. Method(string)' para string com char único
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 CA1865—Como sugestão
CA1866—Como sugestão
CA1867—Não

Motivo

string.Method(string) é utilizado quando string.Method(char) estava disponível.

Os métodos de destino para string estas regras:

  • StartsWith
  • EndsWith
  • IndexOf
  • LastIndexOf

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

ID de diagnóstico Description Correção de 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 há uma comparação especificada. Não
CA1867 Aplica-se a qualquer outra comparação de cadeia de caracteres não coberta pelas outras duas regras. Não

O CA1867 está desativado por padrão.

Descrição da regra

A sobrecarga que usa um parâmetro char tem um desempenho melhor do que a sobrecarga que usa um parâmetro string.

Como corrigir violações

Para corrigir uma violação, use a sobrecarga do parâmetro char em vez da sobrecarga do parâmetro string.

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

Este 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 uma 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

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar 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 para um arquivo, pasta ou projeto, defina sua 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, consulte Como suprimir avisos de análise de código.

Consulte também