Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.09.2019, 13:02
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
Есть enum, имеющий атрибут Flags, в нем значения 0, 1, 2, 4, 8. И есть значение 7, которое является корректным результатом 1|2|4, но не является членом enum. Как в этих условиях проверить, что 7 - корректное значение, соответствующее комбинации флагов? Или 15 - оно включает в себя все флаги, доступные в enum. Только перебрать все значения enum и проверить на and? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 13:18
|
|||
|---|---|---|---|
|
|||
Проверить значение на соответствие enum |
|||
|
#18+
Первое, что пришло в голову Код: c# 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 13:24
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
Не подходит, забыл про еще одно условие: информация об enum имеется в виде Type. В принципе, можно возвести максимальное значение в квадрат и проверить, что пришедшее меньше его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 13:26
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
AntonariyВ принципе, можно возвести максимальное значение в квадрат и проверить, что пришедшее меньше его. Не в квадрат, а умножить на 2 и минус 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 13:29
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
в смысле удвоить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 13:32
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
Dima TAntonariyВ принципе, можно возвести максимальное значение в квадрат и проверить, что пришедшее меньше его. Не в квадрат, а умножить на 2 и минус 1.почему минус 1? максимальное значение комбинации флагов - 15, оно меньше 8*2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 13:49
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
AntonariyDima Tпропущено... Не в квадрат, а умножить на 2 и минус 1.почему минус 1? максимальное значение комбинации флагов - 15, оно меньше 8*2. Минус 1 это максимальное допустимое (8*2-1=15). Если на меньше сравнивать, то не нужно -1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 13:50
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
AntonariyВ принципе, можно возвести максимальное значение в квадрат и проверить, что пришедшее меньше его. Enum.GetValues(typeof(MyEnum)).Cast<int>().Max() * 2 - не годится для "дырявого" enum-а (например 0, 1, 2, 4, 32) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 14:28
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
Shocker.ProПервое, что пришло в голову Код: c# 1. 2. в принципе подходит, но Код: c# 1. 2. result для 7 равен E2 | E3 (тоже самое, что (aa)7), но IsDefined возвращает false. Flags какой-то бестолковый атрибут, судя по описанию, он только и делает, что заставляет ToString перечислять флаги в значении, являющимся их комбинацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 14:38
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
LRAntonariyВ принципе, можно возвести максимальное значение в квадрат и проверить, что пришедшее меньше его. Enum.GetValues(typeof(MyEnum)).Cast<int>().Max() * 2 - не годится для "дырявого" enum-а (например 0, 1, 2, 4, 32)Таких у нас нет и вроде не предвидится, так что пусть будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 14:56
|
|||
|---|---|---|---|
|
|||
Проверить значение на соответствие enum |
|||
|
#18+
AntonariyТаких у нас нет и вроде не предвидится, так что пусть будет.А, ну тогда чистая математика, в чем проблема... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 15:46
|
|||
|---|---|---|---|
|
|||
Проверить значение на соответствие enum |
|||
|
#18+
Можно попробовать как-то так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Во втором примере (с t2) метод GetFlags выдаёт пустую последовательность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.09.2019, 17:16
|
|||
|---|---|---|---|
Проверить значение на соответствие enum |
|||
|
#18+
AntonariyЕсть enum, имеющий атрибут Flags, в нем значения 0, 1, 2, 4, 8. И есть значение 7, которое является корректным результатом 1|2|4, но не является членом enum. Так у тебя все значения будут корректными, которые <= максимальному значению. Если конечно нет дыр типа 0, 1, 2, 4, 32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=%D0%92%D1%8F%D1%87%D0%B5%D1%81%D0%BB%D0%B0%D0%B2+%D0%9C%D0%B0%D0%BB%D1%8F%D0%B2%D0%B8%D0%BD&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 758ms |
| total: | 941ms |

| 0 / 0 |
