Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis 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.