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



考虑FileAttributes为按位运算设计的枚举。我创建了一个系统,用户在其中选择一些复选框来确定文件的状态。文件既ReadOnlySystem。因此,该值将为 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();
}

最新更新