Partilhar via


CA1858: Use StartsWith em vez de IndexOf

Property valor
ID da regra CA1858
Título Use StartsWith em vez de IndexOf
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 9 Como sugestão

Motivo

String.IndexOf é chamado e o seu resultado é comparado com zero.

Descrição da regra

É mais eficiente e claro chamar String.StartsWith do que chamar String.IndexOf e comparar o resultado com zero para determinar se uma cadeia de caracteres começa com um determinado prefixo.

IndexOf pesquisa a cadeia de caracteres inteira, enquanto StartsWith só compara no início da cadeia de caracteres.

Como corrigir violações

Substitua a chamada para String.IndexOf por uma chamada para String.StartsWith.

Exemplo

O trecho de código a seguir mostra uma violação de CA1858:

bool M(string s)
{
    return s.IndexOf("abc") == 0;
}
Function M(s As String) As Boolean
    Return s.IndexOf("abc") = 0
End Function

O trecho de código a seguir corrige a violação:

bool M(string s)
{
    return s.StartsWith("abc");
}
Function M(s As String) As Boolean
    Return s.StartsWith("abc")
End Function

Quando suprimir avisos

É seguro suprimir esse aviso se o desempenho não for uma preocupaçã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 CA1858
// The code that's violating the rule is on this line.
#pragma warning restore CA1858

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

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

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