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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für