Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
| Eigenschaft | Wert |
|---|---|
| Regel-ID | CA2248 |
| Titel | Geben Sie das richtige enum-Argument für „Enum.HasFlag“ an. |
| Kategorie | Verwendung |
| Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
| Standardmäßig in .NET 10 aktiviert | Als Vorschlag |
Ursache
Der Enumerationstyp, der als Argument an den HasFlag-Methodenaufruf übergeben wird, unterscheidet sich vom aufrufenden Enumerationstyp.
Regelbeschreibung
Bei der Enum.HasFlag-Methode muss das enum-Argument denselben enum-Typ haben wie die Instanz, auf der die Methode aufgerufen wird. Wenn es sich um unterschiedliche enum Typen handelt, wird zur Laufzeit eine unbehandelte Ausnahme ausgelöst.
Behandeln von Verstößen
Um Verstöße zu beheben, verwenden Sie sowohl für das Argument als auch für den Aufrufer denselben Enumerationstyp:
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
}
}
Wann sollten Warnungen unterdrückt werden?
Verstöße gegen diese Regel dürfen nicht unterdrückt werden.