4

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

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

我见过这些问题,但它们对我没有帮助,因为它们不适用于按位(标记、组合)值。

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

4

2 回答 2

5
  • 计算所有合法值的累积按位“或”(可能使用 Enum.GetValues)
  • 计算“testValue & ~allValues”
  • 如果它不为零,那么就不可能通过组合合法标志来形成您的当前值
于 2012-08-11T08:57:02.667 回答
2

这将起作用。基本上,如果枚举组合无效,ToString() 将只返回数字。

private bool CombinationValidForFileAttributes(int value)
{
    return ((FileAttributes)value).ToString() != value.ToString();
}
于 2012-08-11T09:09:26.543 回答