Я знаю, что это старый пост, но на всякий случай - аккуратный синтаксис для перечисления флагов:
[Flags]
public enum DaysOfWeek
{
None = 1 << 0,
Monday = 1 << 1,
Tuesday = 1 << 2,
Wednesday = 1 << 3,
Thursday = 1 << 4,
Friday = 1 << 5,
Saturday = 1 << 6,
Sunday = 1 << 7
}
Вам понадобится None, чтобы указать, что ничего не выбрано.Такое перечисление позволяет указывать несколько дней, например:
var selectedDays = DaysOfWeek.Tuesday | DaysOfWeek.Friday;
Надеюсь, комментарии не нужны.И для того, чтобы «декодировать» значение:
public bool IsDayOfWeekSelected(DaysOfWeek which, DaysOfWeek selection)
{
return selection & which == which;
}
И это тогда позволяет нам позвонить:
var isTuesday = IsDayOfWeekSelected(DaysOfWeek.Tuesday, selectedDays); // => true
var isWednesday = IsDayOfWeekSelected(DaysOfWeek.Wednesday, selectedDays); // => false
var isFriday = IsDayOfWeekSelected(DaysOfWeek.Friday, selectedDays); // => true
Надеюсь, это кому-нибудь поможет.