如何有效地验证表示标记枚举的整数?

Sae*_*ati 4 c# validation flags enumeration bit-manipulation

考虑FileAttributes为按位运算设计的枚举.我创建了一个系统,用户可以在其中选择一些复选框来确定文件的状态.文件可以是ReadOnlySystem.因此,该值将是5(1 ReadOnly和4 System).

如何验证整数是否为有效FileAttributes枚举?

我已经看到了这些问题,但它们并没有帮助我,因为它们不适用于bitwised(标记,组合)值.

检查整数类型是否属于枚举成员
有没有办法检查int是否是C#中的合法枚举?

Mar*_*ell 5

  • 计算所有合法值的累积"或"(可能使用Enum.GetValues)
  • 计算"testValue&~allValues"
  • 如果它不为零,那么通过组合合法标志就不可能形成当前值