CA2248: Ange rätt uppräkningsargument till Enum.HasFlag

Egenskap Värde
Regel-ID CA2248
Title Ge korrekt uppräkningsargument till Enum.HasFlag
Kategori Användning
Korrigeringen är antingen invasiv eller icke-invasiv Oumbrytbar
Aktiverad som standard i .NET 10 Som förslag
Tillämpliga språk C# och Visual Basic

Orsak

Enum-typen som skickas som ett argument till metodanropet HasFlag skiljer sig från den anropande enum-typen.

Regelbeskrivning

Metoden Enum.HasFlag förväntar sig enum att argumentet ska vara av samma enum typ som den instans där metoden anropas. Om dessa är olika enum typer, genereras ett ohanterat undantag vid körning.

Så här åtgärdar du överträdelser

Om du vill åtgärda överträdelser använder du samma uppräkningstyp för både argumentet och anroparen:

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 runtime

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

När du ska ignorera varningar

Förhindra inte överträdelser från den här regeln.