Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Vastgoed | Waarde | 
|---|---|
| Regel-ID | CA1874 | 
| Titel | Gebruik Regex.IsMatch | 
| Categorie | prestatie | 
| De oplossing veroorzaakt brekende of niet-brekende problemen | Non-breaking | 
| Standaard ingeschakeld in .NET 10 | Als suggestie | 
Oorzaak
De Success eigenschap van het resultaat wordt Regex.Match gebruikt om te controleren of een patroon overeenkomt.
Beschrijving van regel
              Regex.IsMatch is eenvoudiger en sneller dan Regex.Match(...).Success. De IsMatch methode is geoptimaliseerd voor het geval dat u alleen hoeft te weten of er een overeenkomst bestaat, in plaats van wat de overeenkomst is. Bellen Match() en vervolgens controleren Success doet onnodig werk dat van invloed kan zijn op de prestaties.
Hoe schendingen op te lossen
Vervang aanroepen door Regex.Match(...).SuccessRegex.IsMatch(...).
Er is een codeoplossing beschikbaar waarmee deze transformatie automatisch wordt uitgevoerd.
Example
Het volgende codefragment toont een schending van 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
Met het volgende codefragment wordt de schending opgelost:
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
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing van deze regel te onderdrukken als de prestaties geen probleem zijn.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1874.severity = none
Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.