DEV Community

Discussion on: Taking advantage of BitMasks

Collapse
 
kspeakman profile image
Kasey Speakman • Edited

Alternative syntax to set flags.

_errors = _errors | Errors.Name;
_errors = _errors | Errors.Date;
...

// check present of a flag
var hasDateError = _errors.HasFlag(Errors.Date);

Alternative syntax to define them using C# 7 binary literals

[Flags]
public enum Errors : int
{
    // to represent absence of any flag
    None = 0b0000_0000_0000_0000,
    Name = 0b0000_0000_0000_0001,
    Date = 0b0000_0000_0000_0010,
    Time = 0b0000_0000_0000_0100,
    ...
}

Or shift syntax

[Flags]
public enum Errors : int
{
    // to represent absence of any flag
    None = 0,
    Name = 1 << 0, // 1
    Date = 1 << 1, // 2
    Time = 1 << 2, // 4
    ...
}