C #, Flags Enum, универсальная функция для поиска флага - PullRequest
13 голосов
/ 12 июня 2009

Мне бы хотелось, чтобы одна функция общего назначения могла использоваться с любым перечислением стиля Flags, чтобы увидеть, существует ли флаг.

Это не компилируется, но если у кого-то есть предложение, я буду признателен.

public static Boolean IsEnumFlagPresent<T>(T value,T lookingForFlag) 
       where T:enum
{
    Boolean result = ((value & lookingForFlag) == lookingForFlag);
    return result ;            
}

Ответы [ 11 ]

0 голосов
/ 12 июня 2009

Ну, я не верю, что есть способ сделать это, поскольку нет никаких ограничений, которые применяются к побитовым операторам.

Однако ... вы можете просто привести ваше enum к int и сделать это.

public static Boolean IsEnumFlagPresent(int value,int lookingForFlag) 
{
    return ((value & lookingForFlag) == lookingForFlag);
}

Это работает, но может кого-то сбить с толку.

...