Поделиться через


CA1875: используйте Regex.Count.

Недвижимость Ценность
Идентификатор правила CA1875
Заголовок Используйте Regex.Count
Категория Производительность
Исправление является разрушающим или неразрушающим Non-breaking
Включен по умолчанию в .NET 10 Как предложение

Причина

Свойство CountMatchCollection from Regex.Matches используется для получения количества совпадений.

Описание правила

Regex.Count проще и быстрее Regex.Matches(...).Count. Метод Count() оптимизирован для подсчета совпадений без материализации полного MatchCollection. Вызов Matches() , а затем доступ .Count делает ненужные действия, которые могут повлиять на производительность.

Устранение нарушений

Замените вызовы Regex.Matches(...).CountRegex.Count(...)на .

Доступно исправление кода , которое автоматически выполняет это преобразование.

Example

В следующем фрагменте кода показано нарушение 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

Следующий фрагмент кода исправляет нарушение.

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

Когда следует подавлять предупреждения

Это безопасно для подавления предупреждения из этого правила, если производительность не является проблемой или если вы нацелены на версию .NET, которая не включает Regex.Count (до .NET 7).

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

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

Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".

См. также