Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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.