В перечислении флагов None
должно быть нулем, а All
должно быть накопленной битовой суммой.Это делает математику довольно простой, тогда:
if(value == Permissions.None || value == Permissions.All) {...}
может быть записано как switch
, если вы предпочитаете ...
Однако, в случае general ,Вы можете проверить полное совпадение флагов (с любым количеством битов) с помощью:
if((value & wanted) == wanted) {...}
и проверить на любое перекрытие (т. е. любые общие биты - wanted
должен быть ненулевым):
if((value & wanted) != 0) {...}