Udostępnij za pośrednictwem


CA1847: Użyj String.Contains(char) zamiast String.Contains(string) dla pojedynczych znaków

Właściwości Wartość
Identyfikator reguły CA1847
Tytuł Użyj String.Contains(char) zamiast String.Contains(string) z pojedynczymi znakami
Kategoria Wydajność
Poprawka łamiąca lub nienaruszająca Niezgodność
Domyślnie włączone na platformie .NET 10 Jako sugestia
Zastosowane języki C# i Visual Basic

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 znaku.

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

Zignoruj naruszenie tej reguły, jeśli wpływ na wydajność wywołania wyszukiwania nie jest dla Ciebie istotny.

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ż