假设我有下面的枚举:

[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 ORmyenums 之间做 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/

10-17 01:17