CA2248: Provide correct enum argument to Enum.HasFlag
Property | Value |
---|---|
Rule ID | CA2248 |
Title | Provide correct enum argument to Enum.HasFlag |
Category | Usage |
Fix is breaking or non-breaking | Non-breaking |
Enabled by default in .NET 9 | As suggestion |
Cause
The enum type passed as an argument to the HasFlag
method call is different from the calling enum type.
Rule description
The Enum.HasFlag
method expects the enum
argument to be of the same enum
type as the instance on which the method is invoked. If these are different enum
types, an unhandled exception will be thrown at run time.
How to fix violations
To fix violations, use the same enum type on both the argument and the caller:
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
}
}
When to suppress warnings
Do not suppress violations from this rule.
Συνεργαστείτε μαζί μας στο GitHub
Μπορείτε να βρείτε την πηγή για αυτό το περιεχόμενο στο GitHub, όπου μπορείτε επίσης να δημιουργήσετε και να εξετάσετε ζητήματα και αιτήματα έλξης. Για περισσότερες πληροφορίες, ανατρέξτε στον οδηγό συνεργατών.