Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Vastgoed | Waarde |
|---|---|
| Regel-ID | CA1875 |
| Titel | Gebruik Regex.Count |
| Categorie | prestatie |
| De oplossing veroorzaakt brekende of niet-brekende problemen | Non-breaking |
| Standaard ingeschakeld in .NET 10 | Als suggestie |
Oorzaak
De Count eigenschap van waaruit MatchCollectionRegex.Matches wordt gebruikt om het aantal overeenkomsten op te halen.
Beschrijving van regel
Regex.Count is eenvoudiger en sneller dan Regex.Matches(...).Count. De Count() methode is geoptimaliseerd voor het tellen van overeenkomsten zonder het volledige MatchCollectionte materialiseren. Bellen Matches() en vervolgens openen .Count doet onnodig werk dat van invloed kan zijn op de prestaties.
Hoe schendingen op te lossen
Vervang aanroepen door Regex.Matches(...).CountRegex.Count(...).
Er is een codeoplossing beschikbaar waarmee deze transformatie automatisch wordt uitgevoerd.
Example
Het volgende codefragment toont een schending van CA1875:
using System.Text.RegularExpressions;
class Example
{
public int CountWords(string text)
{
// Violation
return Regex.Matches(text, @"\b\w+\b").Count;
}
}
Imports System.Text.RegularExpressions
Class Example
Public Function CountWords(text As String) As Integer
' Violation
Return Regex.Matches(text, "\b\w+\b").Count
End Function
End Class
Met het volgende codefragment wordt de schending opgelost:
using System.Text.RegularExpressions;
class Example
{
public int CountWords(string text)
{
// Fixed
return Regex.Count(text, @"\b\w+\b");
}
}
Imports System.Text.RegularExpressions
Class Example
Public Function CountWords(text As String) As Integer
' Fixed
Return Regex.Count(text, "\b\w+\b")
End Function
End Class
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing van deze regel te onderdrukken als de prestaties geen probleem zijn of als u zich richt op een versie van .NET die niet is opgenomen Regex.Count (vóór .NET 7).
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 CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1875.severity = none
Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.