Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Fastighet | Värde |
|---|---|
| Regel-ID | CA1875 |
| Titel | Använd Regex.Count |
| Kategori | Föreställning |
| Korrigeringen är antingen brytande eller icke-brytande | Non-breaking |
| Aktiverad som standard i .NET 10 | Som förslag |
Orsak
Egenskapen CountMatchCollection från Regex.Matches används för att hämta antalet matchningar.
Regelbeskrivning
Regex.Count är enklare och snabbare än Regex.Matches(...).Count. Metoden Count() är optimerad för att räkna matchningar utan att materialisera hela MatchCollection. Att anropa Matches() och sedan komma åt .Count gör onödigt arbete som kan påverka prestanda.
Så här åtgärdar du överträdelser
Ersätt anrop till Regex.Matches(...).Count med Regex.Count(...).
Det finns en kodkorrigering som utför den här omvandlingen automatiskt.
Example
Följande kodfragment visar ett brott mot 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
Följande kodfragment åtgärdar överträdelsen:
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
När du ska ignorera varningar
Det är säkert att ignorera en varning från den här regeln om prestanda inte är ett problem eller om du riktar in dig på en version av .NET som inte ingår Regex.Count (före .NET 7).
Undertryck 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 CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875
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.CA1875.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.