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