Compartilhar via


CA1847: usar 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
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Como sugestão

Causa

string.Contains(string) foi usado quando string.Contains(char) estava disponível.

Descrição da regra

Ao pesquisar um caractere único, usar string.Contains(char) oferecerá um desempenho melhor do que string.Contains(string).

Como corrigir violações

Em geral, a regra é corrigida simplesmente usando um literal char 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

É possível alterar esse código para usar um literal char.

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 dessa regra se você não estiver preocupado com o impacto no desempenho da invocação de pesquisa em questão.

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

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.CA1847.severity = none

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

Confira também