Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| 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.