Teilen über


CA1865-CA1867: Verwenden Sie 'string.Method(char)' anstelle von 'string.Method(string)' für eine Zeichenfolge mit einem einzelnen Char

Eigenschaft Wert
Regel-ID CA1865-CA1867
Titel Verwenden Sie 'string.Method(char)' anstelle von 'string.Method(string)' für eine Zeichenfolge mit einem einzelnen Char
Kategorie Leistung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert CA1865 – Als Vorschlag
CA1866 – Als Vorschlag
CA1867 – Nein

Ursache

string.Method(string) wird verwendet, wenn string.Method(char) verfügbar war.

Die Zielmethoden für string für diese Regeln:

  • StartsWith
  • EndsWith
  • IndexOf
  • LastIndexOf

In der folgenden Tabelle sind die Bedingungen für jede der zugehörigen Regel-IDs zusammengefasst.

Diagnose-ID Beschreibung Schnelle Problembehebung verfügbar
CA1865 Gilt, wenn eine sichere Transformation automatisch mit einer Codekorrektur ausgeführt werden kann. Ja
CA1866 Gilt, wenn kein angegebener Vergleich vorhanden ist. Nein
CA1867 Gilt für einen anderen Zeichenfolgenvergleich, der nicht von den anderen beiden Regeln abgedeckt wird. Nein

CA1867 ist standardmäßig deaktiviert.

Regelbeschreibung

Die Überladung, die einen Zeichenparameter verwendet, führt besser aus als die Überladung, die einen Zeichenfolgenparameter akzeptiert.

Behandeln von Verstößen

Verwenden Sie die Char-Parameterüberladung anstelle der Zeichenfolgenparameterüberladung, um einen Verstoß zu beheben.

Betrachten Sie das folgende Beispiel:

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith("I");
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I")
End Function

Dieser Code kann geändert werden, um 'I' anstelle der Zeichenfolge "I" an StartsWithzu übergeben.

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith('I');
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I"c)
End Function

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie einen Verstoß gegen diese Regel, wenn Sie sich keine Sorgen über die Auswirkungen des Aufrufs der Methode mit einer Zeichenfolge auf die Leistung 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 CA1865 // or CA1866 or CA1867
// The code that's violating the rule is on this line.
#pragma warning restore CA1865 // or CA1866 or CA1867

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.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none

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

Siehe auch