CA2248:向 Enum.HasFlag 提供正确的 enum 参数
属性 | 值 |
---|---|
规则 ID | CA2248 |
标题 | 向 Enum.HasFlag 提供正确的 enum 参数 |
类别 | 使用情况 |
修复是中断修复还是非中断修复 | 非中断 |
在 .NET 8 中默认启用 | 作为建议 |
原因
将枚举类型作为参数传递给 HasFlag
方法调用本质上与调用枚举类型不同。
规则说明
Enum.HasFlag
方法要求 enum
参数的 enum
类型与调用该方法的实例的相应类型相同。 如果它们是不同的 enum
类型,则在运行时将引发未经处理的异常。
如何解决冲突
若要解决冲突,请在参数和调用方上使用相同的枚举类型:
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
}
}
何时禁止显示警告
请勿禁止显示此规则的冲突。