Share via


CA1865-CA1867: gebruik tekenreeks. Method(char)' in plaats van 'tekenreeks'. Method(string)' voor tekenreeks met één teken

Eigenschappen Weergegeven als
Regel-id CA1865-CA1867
Titel Gebruik tekenreeks. Method(char)' in plaats van 'tekenreeks'. Method(string)' voor tekenreeks met één teken
Categorie Prestaties
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 CA1865- Als suggestie
CA1866: als suggestie
CA1867- Nee

Oorzaak

string.Method(string) wordt gebruikt wanneer string.Method(char) deze beschikbaar was.

De doelmethoden string voor deze regels:

  • StartsWith
  • EndsWith
  • IndexOf
  • LastIndexOf

De volgende tabel bevat een overzicht van de voorwaarden voor elk van de gerelateerde regel-id's.

Diagnostische id Beschrijving Er is codeoplossing beschikbaar
CA1865 Is van toepassing wanneer een veilige transformatie automatisch kan worden uitgevoerd met een codefix. Ja
CA1866 Is van toepassing wanneer er geen opgegeven vergelijking is. Nee
CA1867 Is van toepassing op een andere tekenreeksvergelijking die niet wordt gedekt door de andere twee regels. Nee

CA1867 is standaard uitgeschakeld.

Beschrijving van regel

De overbelasting die een tekenparameter gebruikt, presteert beter dan de overbelasting die een tekenreeksparameter gebruikt.

Schendingen oplossen

Als u een schending wilt oplossen, gebruikt u de overbelasting van de tekenreeksparameter in plaats van de overbelasting van de tekenreeksparameter.

Kijk een naar het volgende voorbeeld:

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

Deze code kan worden gewijzigd om door te geven 'I' aan StartsWith in plaats van de tekenreeks "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

Wanneer waarschuwingen onderdrukken

Onderdrukt een schending van deze regel als u zich geen zorgen maakt over de invloed van de prestaties van het aanroepen van de methode met een tekenreeks.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Zie ook