Teilen über


CA1847: Verwenden von String.Contains(char) anstelle von String.Contains(string) mit einzelnen Zeichen

Eigenschaft Wert
Regel-ID CA1847
Titel Verwenden Von String.Contains(char) anstelle von String.Contains(string) mit einzelnen Zeichen
Kategorie Leistung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Als Vorschlag

Ursache

String.Contains(string) wird verwendet, wenn String.Contains(char) verfügbar ist.

Regelbeschreibung

Bei der Suche nach einem einzelnen Zeichen String.Contains(char) bietet es eine bessere Leistung als String.Contains(string).

Behandeln von Verstößen

Im Allgemeinen wird die Regel einfach mithilfe eines char-Literals anstelle eines Zeichenfolgenliterals korrigiert.

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

Dieser Code kann geändert werden, um stattdessen ein char-Literal zu verwenden.

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

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie einen Verstoß gegen diese Regel, wenn Sie sich keine Gedanken über die Auswirkungen auf die Leistung durch den fraglichen Suchaufruf machen.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch