Страницы

Поиск по вопросам

пятница, 2 ноября 2018 г.

В чем заключается отличие перечисления с битовым флагом от обычного перечисления?

Чем различается перечисление, объявленное так:
[Flags] public enum ASD { None = 0, Param1 = 1, Param2 = 2, Param3 = 4, }
или так
public enum ASD { None = 0, Param1 = 1, Param2 = 2, Param3 = 4, }


Ответ

Этот атрибут означает, что значения перечисления, к которому он применяется, могут рассматриваться как битовые поля и к ним можно применять битовые операции, что отразится, в частности, на поведении метода ToString.
Например:
// если перечисление помечено атрибутом ASD flags = (ASD)5; Console.WriteLine(flags); // выведет Param1, Param3
// если перечисление не помечено атрибутом ASD enums = (ASD)5; Console.WriteLine(enums); // выведет 5

Комментариев нет:

Отправить комментарий