Sdílet prostřednictvím


CA1875: Použijte výraz Regex.Count.

Vlastnictví Hodnota
Identifikátor pravidla CA1875
Titul Použijte Regex.Count
Kategorie výkon
Oprava je destruktivní nebo nedestruktivní Non-breaking
Povoleno ve výchozím nastavení v .NET 10 Jako návrh

Příčina

Vlastnost CountMatchCollection from Regex.Matches slouží k získání počtu shod.

Popis pravidla

Regex.Count je jednodušší a rychlejší než Regex.Matches(...).Count. Metoda Count() je optimalizovaná pro počítání shod bez materializace plné MatchCollection. Volání Matches() a přístup .Count k němu nemusí mít vliv na výkon.

Jak opravit porušení

Nahraďte volání Regex.Matches(...).Count za Regex.Count(...).

Je k dispozici oprava kódu , která tuto transformaci automaticky provede.

Example

Následující fragment kódu ukazuje porušení 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

Následující fragment kódu opraví porušení zásad:

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

Kdy potlačit upozornění

Upozornění z tohoto pravidla je bezpečné potlačit, pokud se nejedná o problém nebo pokud cílíte na verzi .NET, která nezahrnuje Regex.Count (před .NET 7).

Potlačte upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také