Kombinationen und Maskierungen mit Enums und Flags


Das Beispiel unten zeigt, wie Flags eingesetzt werden können um bitweise mit Kombinationen arbeiten zu können. Mehrere Flags können mit einem OR-Operator verknüpft werden (Siehe Zeile 14). Eine Kombination kann über einen AND-Operator aufgelöst werden (Siehe z. B. Zeile 19).

1 [Flags()]
2 public enum Usage
3 {
4 Private = 1,
5 Commercial = 2,
6 Education = 4,
7 Training = 8
8 }
9
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 TheUsage(Usage.Commercial | Usage.Education);
15 }
16
17 static void TheUsage(Usage usage)
18 {
19 bool isPrivate = (Usage.Private & usage) == Usage.Private; // false
20 bool isCommercial = (Usage.Commercial & usage) == Usage.Commercial; // true
21 bool isEducation = (Usage.Education & usage) == Usage.Education; // true
22 bool isTraining = (Usage.Training & usage) == Usage.Training; // false
23 }
24 }


Ich liebe es.

0 Kommentare:

Kommentar veröffentlichen