Share via


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

Se även