Suppose I have the following:
[Flags]
public enum Options : long
{
None = 0,
Flag1 = 0x00000001,
Flag2 = 0x00000002,
Flag3 = 0x00000004,
Flag4 = 0x00000008,
Flag5 = 0x00000010,
// ...
FlagV = 0x10000000000,
FlagW = 0x20000000000,
FlagX = 0x40000000000,
FlagY = 0x80000000000,
FlagZ = 0x100000000000
}
Currently, to determine if a flag is set, I am doing this:
(myOptions & (long)Options.Flag1) == (long)Options.Flag1
How do I determine whether ANY flag above FlagV (e.g. FlagW, FlagX, etc.) is set and retrieve its value (e.g. if FlagW, FlagX, and FlagZ are set, I want to retrieve the value of FlagW)? In other words, is there an alternative to this:
if ((myOptions & (long)Options.FlagW) == (long)Options.FlagW)
return (long)Options.FlagW;
else if ((myOptions & (long)Options.FlagX) == (long)Options.FlagX)
return (long)Options.FlagX;
else if ((myOptions & (long)Options.FlagY) == (long)Options.FlagY)
return (long)Options.FlagY;
// etc.