#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";
Комментариев нет:
Отправить комментарий