Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
| Недвижимость | Ценность |
|---|---|
| Идентификатор правила | CA1874 |
| Заголовок | Используйте Regex.IsMatch |
| Категория | Производительность |
| Исправление является разрушающим или неразрушающим | Non-breaking |
| Включен по умолчанию в .NET 10 | Как предложение |
Причина
Свойство Success результата Regex.Match используется для проверки соответствия шаблона.
Описание правила
Regex.IsMatch проще и быстрее Regex.Match(...).Success. Метод IsMatch оптимизирован для случая, когда необходимо только знать, существует ли совпадение, а не то, что такое совпадение. Вызов Match() , а затем проверка Success делает ненужные действия, которые могут повлиять на производительность.
Устранение нарушений
Замените вызовы Regex.Match(...).SuccessRegex.IsMatch(...)на .
Доступно исправление кода , которое автоматически выполняет это преобразование.
Example
В следующем фрагменте кода показано нарушение CA1874:
using System.Text.RegularExpressions;
class Example
{
public bool IsValidEmail(string email)
{
// Violation
return Regex.Match(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$").Success;
}
}
Imports System.Text.RegularExpressions
Class Example
Public Function IsValidEmail(email As String) As Boolean
' Violation
Return Regex.Match(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$").Success
End Function
End Class
Следующий фрагмент кода исправляет нарушение.
using System.Text.RegularExpressions;
class Example
{
public bool IsValidEmail(string email)
{
// Fixed
return Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$");
}
}
Imports System.Text.RegularExpressions
Class Example
Public Function IsValidEmail(email As String) As Boolean
' Fixed
Return Regex.IsMatch(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$")
End Function
End Class
Когда следует подавлять предупреждения
Это безопасно, чтобы отключить предупреждение от этого правила, если производительность не является проблемой.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1874.severity = none
Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".