I have four flags
Current = 0x1
Past = 0x2
Future = 0x4
All = 0x7
Say I receive the two flags Past and Future (setFlags(PAST
An addendum to Marc Gravell and Vilx-'s answer:
Your flagged enum shouldn't specify the amount for "All", it should just include your existing values. This goes for any calculated values.
[Flags]
public enum Time
{
None = 0,
Current = 1,
Past = 2,
Future = 4,
All = Current | Past | Future
}
Note that Vilx- removed the use of Hexadecimal for values. This is important because once you're past 0x8, your values will have to comply with Hex. You should just stay in decimal.
EDIT: I also want to add that you can use bit shifting rather than hex/decimal.
This looks like:
[Flags]
public enum Time
{
None = 0,
Current = 1,
Past = 1 << 1, // 2, 10 binary
Future = 1 << 2, // 4, 100 binary
All = Current | Past | Future
}