Учитывая документацию , я ожидаю, что она вернет true, если значение имеет оба этих флагов.
Если вы хотите проверить, является ли вашзначение имеет либо из этих флагов, вам понадобится
value.HasFlag(AccessRights.Read) | value.HasFlag(AccessRights.Write)
Если это не достаточно хорошо читается для вас, вы можете посмотреть на мою Неограниченную мелодию проект.Бывает так, что он уже обладает нужной вам функциональностью (как методы расширения в Flags.cs
):
// Same as value.HasFlag(AccessRights.Read | AccessRights.Write)
value.HasAll(AccessRights.Read | AccessRights.Write)
// Same as value.HasFlag(AccessRights.Read) | value.HasFlag(AccessRights.Write)
value.HasAny(AccessRights.Read | AccessRights.Write)
Это сделало бы это более понятным, ИМО.Они также избегали бы бокса и были бы в безопасности :))