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 8 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 während der Laufzeit ein Ausnahmefehler 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 run time
m.HasFlag(MyEnum.A); // Valid call
}
}
Wann sollten Warnungen unterdrückt werden?
Verstöße gegen diese Regel dürfen nicht unterdrückt werden.
Arbeiten Sie mit uns auf GitHub zusammen
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.