Share via


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

Property Värde
Regel-ID CA2248
Title Ange rätt uppräkningsargument till Enum.HasFlag
Kategori Användning
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Som förslag

Orsak

Uppräkningstypen som skickas som ett argument till metodanropet HasFlag skiljer sig från den anropande uppräkningstypen.

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 det här ä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 run time

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

När du ska ignorera varningar

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