Udostępnij za pośrednictwem


CA1847: Użyj ciągu.Contains(char) zamiast String.Contains(string) z pojedynczymi znakami

Właściwości Wartość
Identyfikator reguły CA1847
Tytuł Użyj ciągu.Contains(char) zamiast String.Contains(ciąg) z pojedynczymi znakami
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Jako sugestia

Przyczyna

String.Contains(string) jest używany, gdy String.Contains(char) jest dostępny.

Opis reguły

Podczas wyszukiwania pojedynczego znaku String.Contains(char) zapewnia lepszą wydajność niż String.Contains(string).

Jak naprawić naruszenia

Ogólnie rzecz biorąc, reguła jest stała po prostu przy użyciu literału znaków zamiast literału ciągu.

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

Ten kod można zmienić, aby zamiast tego użyć literału znaków.

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

Kiedy pomijać ostrzeżenia

Pomiń naruszenie tej reguły, jeśli nie interesuje Cię wpływ na wydajność wywołania wyszukiwania.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz też