Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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 9 | 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.