Атрибут 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