Compartir a través de


CA1875: Usar 'Regex.Count'

Propiedad Importancia
Identificador de la regla CA1875
Título Utilice Regex.Count
Categoría Rendimiento
La corrección es disruptiva o no disruptiva Non-breaking
Habilitado de forma predeterminada en .NET 10 Como sugerencia

Causa

La Count propiedad de from MatchCollectionRegex.Matches se usa para obtener el recuento de coincidencias.

Descripción de la regla

Regex.Count es más sencillo y más rápido que Regex.Matches(...).Count. El Count() método está optimizado para contar coincidencias sin materializar el completo MatchCollection. Llamar Matches() a y, a continuación, acceder .Count a realiza un trabajo innecesario que puede afectar al rendimiento.

Cómo corregir infracciones

Reemplace las llamadas a por Regex.Matches(...).CountRegex.Count(...).

Hay disponible una corrección de código que realiza automáticamente esta transformación.

Example

El fragmento de código siguiente muestra una infracción de 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

El siguiente fragmento de código corrige la infracción:

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

Cuándo suprimir las advertencias

Es seguro suprimir una advertencia de esta regla si el rendimiento no es un problema o si tiene como destino una versión de .NET que no incluye Regex.Count (antes de .NET 7).

Supresión de una advertencia

Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

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

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.

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

Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.

Consulte también