CA1865-CA1867: Använd sträng. Method(char)' i stället för "string" (sträng). Method(string)' för sträng med enstaka tecken
Property | Värde |
---|---|
Regel-ID | CA1865-CA1867 |
Title | Använd sträng. Method(char)' i stället för "string" (sträng). Method(string)' för sträng med enstaka tecken |
Kategori | Prestanda |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | CA1865 – Som förslag CA1866 – Som förslag CA1867 – Nej |
Orsak
string.Method(string)
används när string.Method(char)
det var tillgängligt.
Målmetoderna för string
dessa regler:
StartsWith
EndsWith
IndexOf
LastIndexOf
I följande tabell sammanfattas villkoren för var och en av de relaterade regel-ID:erna.
Diagnostik-ID | beskrivning | Tillgänglig kodkorrigering? |
---|---|---|
CA1865 | Gäller när en säker transformering kan utföras automatiskt med en kodkorrigering. | Ja |
CA1866 | Gäller när det inte finns någon angiven jämförelse. | Nej |
CA1867 | Gäller för andra strängjämförelser som inte omfattas av de andra två reglerna. | Nej |
CA1867 är inaktiverat som standard.
Regelbeskrivning
Överlagringen som tar en teckenparameter presterar bättre än den överlagring som tar en strängparameter.
Så här åtgärdar du överträdelser
Om du vill åtgärda en överträdelse använder du överlagringen av teckenparametern i stället för överlagringen av strängparametern.
Ta följande som exempel:
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
Den här koden kan ändras så att den skickas 'I'
till i stället för StartsWith
strängen "I"
.
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
När du ska ignorera varningar
Undertryck en överträdelse av den här regeln om du inte bryr dig om prestandapåverkan av att anropa metoden med en sträng.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#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
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.