Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
| Недвижимость | Ценность |
|---|---|
| Идентификатор правила | 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
Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".