Partilhar via


CA1847: Use String.Contains(char) em vez de String.Contains(string) com caracteres únicos

Property valor
ID da regra CA1847
Título Use String.Contains(char) em vez de String.Contains(string) com caracteres únicos
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Como sugestão

Motivo

String.Contains(string) é utilizado quando String.Contains(char) disponível.

Descrição da regra

Ao procurar por um único personagem, String.Contains(char) oferece melhor desempenho do que String.Contains(string).

Como corrigir violações

Em geral, a regra é corrigida simplesmente usando um literal de caracteres em vez de um literal de cadeia de caracteres.

public bool ContainsLetterI()
{
    var testString = "I am a test string.";
    return testString.Contains("I");
}
Public Function ContainsLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.Contains("I")
End Function

Este código pode ser alterado para usar um literal de caracteres em vez disso.

public bool ContainsLetterI()
{
    var testString = "I am a test string.";
    return testString.Contains('I');
}
Public Function ContainsLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.Contains("I"c)
End Function

Quando suprimir avisos

Suprima uma violação desta regra se não estiver preocupado com o impacto no desempenho da invocação de pesquisa em questão.

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 CA1847
// The code that's violating the rule is on this line.
#pragma warning restore CA1847

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA1847.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também