如何解决如何检查一个枚举标志是否与另一个枚举一起引发?
| 我有以下枚举:[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不引发。其余的可以相同的方式完成。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。