Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| 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:
StartsWithEndsWithIndexOfLastIndexOf
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.