Condividi tramite


CA1875: Usare 'Regex.Count'

Proprietà Value
ID della regola CA1875
Titolo Utilizzare Regex.Count
Categoria Prestazioni
La correzione causa un'interruzione o meno Non-breaking
Abilitato per impostazione predefinita in .NET 10 Come suggerimento

Motivo

La Count proprietà di MatchCollection da Regex.Matches viene utilizzata per ottenere il conteggio delle corrispondenze.

Descrizione regola

Regex.Count è più semplice e veloce di Regex.Matches(...).Count. Il Count() metodo è ottimizzato per il conteggio delle corrispondenze senza materializzare l'intero MatchCollectionoggetto . La chiamata Matches() e l'accesso .Count non comportano operazioni necessarie che possono influire sulle prestazioni.

Come correggere le violazioni

Sostituire le chiamate a Regex.Matches(...).Count con Regex.Count(...).

È disponibile una correzione del codice che esegue automaticamente questa trasformazione.

Example

Il frammento di codice seguente mostra una violazione di 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

Il frammento di codice seguente corregge la violazione:

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

Quando eliminare gli avvisi

È possibile eliminare un avviso da questa regola se le prestazioni non sono un problema o se si ha come destinazione una versione di .NET che non include Regex.Count (prima di .NET 7).

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche