Share via


CA2248: Geef het juiste enum-argument op voor Enum.HasFlag

Eigenschappen Weergegeven als
Regel-id CA2248
Titel Geef het juiste enum-argument op voor Enum.HasFlag
Categorie Gebruik
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Als suggestie

Oorzaak

Het enum-type dat als argument aan de HasFlag methodeaanroep wordt doorgegeven, verschilt van het aanroepende enum-type.

Beschrijving van regel

De Enum.HasFlag methode verwacht dat het enum argument van hetzelfde enum type is als het exemplaar waarop de methode wordt aangeroepen. Als dit verschillende enum typen zijn, wordt er tijdens runtime een niet-verwerkte uitzondering gegenereerd.

Schendingen oplossen

Als u schendingen wilt oplossen, gebruikt u hetzelfde enumtype voor zowel het argument als de aanroeper:

public class C
{
    [Flags]
    public enum MyEnum { A, B, }

    [Flags]
    public enum OtherEnum { A, }

    public void Method(MyEnum m)
    {
        m.HasFlag(OtherEnum.A); // Enum types are different, this call will cause an `ArgumentException` to be thrown at run time

        m.HasFlag(MyEnum.A); // Valid call
    }
}

Wanneer waarschuwingen onderdrukken

Geen schendingen van deze regel onderdrukken.