Какой смысл [Флаги] атрибут Вы можете контроль битов без него?
Атрибут Flags позволяет вам видеть CSV (значение, разделенное запятыми) вашего перечислимого типа при вызове ToString ()
Например:
[Flags]
public Enum Permissions
{
None =0,
Read = 1,
Write =2,
Delete= 4
}
Permissions p = Permissions.Read | Permissions.Write;
p.ToString() //Prints out "Read, Write"
Однако вы все равно можете получить то же самое, если вы удалите атрибут flags и просто выполните:
p.ToString("F") //Prints out "Read, Write"
И, как указал Джон, это также позволяет вам преобразовать CSV обратно в Enum, используя Enum.Parse
Он изменяет поведение преобразования между строками и значениями перечисления ( Enum.Parse
и ToString
).