假设我有下面的枚举:
[Flags]
public enum NotifyType
{
None = 0,
Window = 1 << 0,
Sound = 1 << 1,
Flash = 1 << 2,
MobileSound = 1 << 3,
MobilePush = 1 << 4
}
考虑两个枚举:
var myenums = Window | Sound | Flash;
//var possibleUpdate = Window | MobilePush;
void UpdateMyEnums(NotifyType possibleUpdate)
{
//Does myenums contain all the flags in 'possibleUpdate'? If not add
//the missing flags to myenums
}
与
myenums
相比,如何确定 NotifyType.MobilePush
变量不包含 possibleUpdate
值?我是否必须针对 possibleUpdate
测试 myenums
中的每个标志?我在 .NET 4.0 上使用 C#
最佳答案
无需弄清楚缺少哪一个,您只需要在 bit-wise OR
和 myenums
之间做 possibleUpdate
,然后将值赋值回来。
//Does myenums contain all the flags in 'possibleUpdate'?
if (myenums & possibleUpdate != possibleUpdate)
//If not add the missing flags to myenums
myenums = myenums | possibleUpdate;
关于c# - 确定枚举中缺少哪些标志,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18323031/