C Sharp Flags: Difference between revisions
From Leo's Notes
This page was last edited on 9 December 2012, at 19:06.
Created page with "== Defining Flags == [Flags] public enum State { Idle = 0x01, Available = 0x02, InService = 0x04, Accelerating = 0x08, Decelerating = 0x10, Sto..." |
|||
| Line 21: | Line 21: | ||
state = state | State.Stopped; | state = state | State.Stopped; | ||
<code>state</code> now has both Available and Stopped. The actual value of <code>state</ | <code>state</code> now has both Available and Stopped. The actual value of <code>state</code> is 0x22 (from 0x02 + 0x22) | ||
=== Removing a Flag === | === Removing a Flag === | ||
Revision as of 19:06, 9 December 2012
Defining Flags
[Flags]
public enum State {
Idle = 0x01,
Available = 0x02,
InService = 0x04,
Accelerating = 0x08,
Decelerating = 0x10,
Stopped = 0x20,
}
Notice that the flags are given values of powers of two.
Operations
Setting a Flag
Use the bit-wise OR operation to set (add) a flag.
State state = State.Available; state = state | State.Stopped;
state now has both Available and Stopped. The actual value of state is 0x22 (from 0x02 + 0x22)
Removing a Flag
Use the bit-wise XOR (^) operation to unset (remove) a flag.
State state = State.Available | State.Stopped; state = state ^ State.Available; state = state ^ State.Stopped; state = state | State.InService;
state is now InService. The actual value of state</state> is 0x04.
Checking
Use the bit-wise AND operation to do checking.
State state = State.Available | State.Stopped;
if (state & State.Idle == State.Idle) {
// This will fail as state is set to Available and Stopped.
}