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 StartsWith
zu ü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.