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

Eigenschap Waarde
Regel-id CA1865-CA1867
Titel Gebruik 'string.Method(char)' in plaats van 'string.Method(string)' voor een string met een enkel teken
Categorie Prestaties
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 CA1865- Als suggestie
CA1866: als suggestie
CA1867- Nee
Toepasselijke talen C# en Visual Basic

Oorzaak

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

De doelmethoden op 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.

Hoe schendingen op te lossen

Als u een schending wilt oplossen, gebruikt u de overbelasting van de karakterparameter 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

Onderdruk een schending van deze regel als u zich geen zorgen maakt over de prestatie-impact 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 voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.

Zie ook