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.