如何检查一个枚举标志是否与另一个枚举一起引发?

| 我有以下枚举:
[Flags]
public enum Permissions
{
    None = 0x0000,
    All = 0xFFFF
}
如果引发None或All,则不应引发其他标志。 如何检查是否引发None或All,而没有其他?     
已邀请:
        在标志枚举中,
None
应为零,
All
应为累积的按位和。这使得数学非常容易,然后:
if(value == Permissions.None || value == Permissions.All) {...}
如果愿意的话,可能会写成
switch
... 但是,在一般情况下,您可以使用以下命令测试标志是否完全匹配(针对任意位数):
if((value & wanted) == wanted) {...}
并测试是否有任何重叠(即任何公共位-“ѭ6”必须为非零):
if((value & wanted) != 0) {...}
    
        
if(value|Permissions.None)==Permissions.None;
这可以检查Permissions.None不引发。其余的可以相同的方式完成。     

要回复问题请先登录注册