Страницы

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

пятница, 20 декабря 2019 г.

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

#c_sharp #net


Чем различается перечисление, объявленное так:

[Flags]
public enum ASD
{
    None = 0,
    Param1 = 1,
    Param2 = 2,
    Param3 = 4,
}


или так

public enum ASD
{
    None = 0,
    Param1 = 1,
    Param2 = 2,
    Param3 = 4,
}

    


Ответы

Ответ 1



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

Ответ 2



С точки зрения механизма работы - этот атрибут меняет поведение метода ToString() Без атрибута: ((ASD)3).ToString() == "3"; С атрибутом: ((ASD)3).ToString() == "Param1, Param2";

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

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