Megosztás a következőn keresztül:


CA1875: A "Regex.Count" használata

Ingatlan Érték
Szabályazonosító CA1875
Title Használja a Regex.Count-t
Kategória teljesítmény
A javítás törést okoz vagy nem okoz törést Nem törhető
Alapértelmezés szerint engedélyezve a .NET 10-ben Javaslatként

Oka

A Count forrás Regex.Matches tulajdonsága MatchCollection a találatok számának lekérésére szolgál.

Szabály leírása

Regex.Count egyszerűbb és gyorsabb, mint Regex.Matches(...).Counta . A Count() metódus az egyezések számlálására van optimalizálva anélkül, hogy a teljes MatchCollection. A hívás Matches() és a .Count hozzáférés szükségtelen munkát végez, ami hatással lehet a teljesítményre.

Szabálysértések kijavítása

Cserélje le a hívásokat a /> kifejezésre .

Elérhető egy kódjavítás , amely automatikusan végrehajtja ezt az átalakítást.

Example

A következő kódrészlet a CA1875 megsértését mutatja be:

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

A következő kódrészlet kijavítja a szabálysértést:

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

Mikor kell letiltani a figyelmeztetéseket?

A szabály figyelmeztetését nyugodtan letilthatja, ha a teljesítmény nem okoz problémát, vagy ha a .NET olyan verzióját célozza meg, amely nem tartalmazza Regex.Count (a .NET 7 előtti verziót).

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA1875.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Lásd még