Sdílet prostřednictvím


CA1847: Místo String.Contains(string) použijte řetězec.Contains(řetězec) s jedním znakem.

Vlastnost Hodnota
ID pravidla CA1847
Název Použití String.Contains(char) místo String.Contains(string) s jedními znaky
Kategorie Výkon
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 9 Jako návrh

Příčina

String.Contains(string) se používá, pokud String.Contains(char) je k dispozici.

Popis pravidla

Při hledání jednoho znaku String.Contains(char) nabízí lepší výkon než String.Contains(string).

Jak opravit porušení

Obecně platí, že pravidlo je opraveno jednoduše pomocí znakového literálu místo řetězcového literálu.

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

Tento kód lze změnit tak, aby místo toho používal literál typu 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

Kdy potlačit upozornění

Potlačit porušení tohoto pravidla, pokud vás nezajímá dopad na výkon příslušného vyvolání vyhledávání.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

#pragma warning disable CA1847
// The code that's violating the rule is on this line.
#pragma warning restore CA1847

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také