| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > [Flags]Enum |
| Автор: ДобренькийПапаша 18.5.2011, 19:47 | ||
| Через метод получаю некий код, представленный как int. Есть перечисление c атрибутом Flags, каждому имени в перечислении соответствует конкретное int значение. Мне нужно найти пересечение пунктов перечисления, которые дают в результате тот самый, полученный в начале через метод код (он является пересечением каких-то значений из перечисления).
Нужно найти то, из каких пунктов перечисления (их пересечение) состоит полученный через метод код и вывести одно за другим эти пункты перечисления. Например, если я через метод получаю значение 272, то этот код означает пересечение пунктов CardCaptureError и CardPreEmpty, т.е. 256 | 16. Надо вывести на консоль соотвественно CardCaptureError и CardPreEmpty. |
| Автор: Ky7m 18.5.2011, 20:50 |
| Ну можно на возвращаемый результат накладывать маску и смотреть наличие определенного значения. То есть 272 = 0000 0001 0001 0000 16 = 0000 0000 0001 0000 256 = 0000 0001 0000 0000 Побитовое И вернет 1 если есть пересечение. |
| Автор: -Mikle- 19.5.2011, 07:17 | ||||||
Просто приведи тип int к типу ReturnCode.
Проверить наличие флага можно так:
Получить список выставленных флагов:
Чтобы упростить себе жизнь, если ты это часто используешь, напиши extension-метод для Enum и используй с любым перечислением. |