.NET Framework wspiera flagi bitowe poprzez specjalny atrybut Flags. Korzystając z niego nie tylko oznaczamy, że dany typ wyliczeniowy jest flagą bitową. Dodatkowo wypisując wartości takiego typu dostajemy wylistowane, które zbiory taka wartość reprezentuje.
Warto pamiętać o ustawieniu wartości dla zer - będzie to wartość domyślna ustawiana przy starcie aplikacji przez CLR.
class Program { static void Main(string[] args) { var list1 = new List<Roles>(); var list2 = new List<Jobs>(); for (var i = 0; i < 16; i++) { list1.Add((Roles)i); list2.Add((Jobs)i); } Console.WriteLine("Jobs - without flag"); foreach (var job in list2) { Console.WriteLine(job); } Console.WriteLine("Roles - with flag"); foreach (var role in list1) { Console.WriteLine(role); } Console.ReadLine(); } } [System.Flags] public enum Roles { None = 0, Tester = 1, Developer = 2, Architect = 4, Manager = 8 } public enum Jobs { None = 0, Tester = 1, Developer = 2, Architect = 4, Manager = 8 } }
Na konsoli wypisane zostało:
Jobs - without flag None Tester Developer 3 Architect 5 6 7 Manager 9 10 11 12 13 14 15 Roles - with flag None Tester Developer Tester, Developer Architect Tester, Architect Developer, Architect Tester, Developer, Architect Manager Tester, Manager Developer, Manager Tester, Developer, Manager Architect, Manager Tester, Architect, Manager Developer, Architect, Manager Tester, Developer, Architect, Manager
Brak komentarzy:
Prześlij komentarz