Teilen über


CA2248: Geben Sie das richtige enum-Argument für „Enum.HasFlag“ an.

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.