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 9 | 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.
Samarbeta med oss på GitHub
Källan för det här innehållet finns på GitHub, där du även kan skapa och granska ärenden och pull-begäranden. Se vår deltagarguide för mer information.