考虑FileAttributes
为按位运算设计的枚举。我创建了一个系统,用户在其中选择一些复选框来确定文件的状态。文件既ReadOnly
又System
。因此,该值将为 5(1 表示 ReadOnly
,4 表示 4 System
)。
如何验证整数是否为有效的FileAttributes
枚举?
我见过这些问题,但它们对我没有帮助,因为它们不适用于 bitwized(标记、组合)值。
检查整数类型是否属于枚举成员
有没有办法检查 int 是否是 C# 中的合法枚举?
- 计算所有合法值的累积按位"or"(可能使用 Enum.GetValues)
- 计算"testValue & ~allValues"
- 如果这不为零,则不可能通过组合合法标志来形成您的当前值
这将起作用。基本上,如果枚举组合无效,ToString() 将只返回数字。
private bool CombinationValidForFileAttributes(int value)
{
return ((FileAttributes)value).ToString() != value.ToString();
}