Enum Bitweiseverknüpfen und auswerten
-
Hi , angenommen ich habe folgenden enum deklariert:
[Flags] enum Options { Name = 0x02, Type = 0x04, Size = 0x08, LastModification=0x10 };
und ich Definiere mir eine Variable mit folgenden Wert:
Options tOption = Options.Name | Options.Type;
Wie bekomme ich jetzt einen Switch-Block oder if -Anweisung dazu,
dass er in die einzelnen Bereiche geht
bsp:...if(tOption == Options.Name) ; //bzw switch(tOption) { case Otions.Name: beak }
wahrscheinlich muss ich das noch irgendwie Bitweise & Verknüpfen, mit allen Elementen die in den enum sind
-
if((tOption & Options.Name) == Options.Name) ...
-
if(tOption & Options.Name) {...}
-
_matze schrieb:
if(tOption & Options.Name) {...}
Das hat noch nie funktioniert, weil nicht implizit nach bool konvertiert wird.
-
Cannot implicitly convert type 'Options' to 'bool'
-
nene schrieb:
_matze schrieb:
if(tOption & Options.Name) {...}
Das hat noch nie funktioniert, weil nicht implizit nach bool konvertiert wird.
Ähm, ok, wir sind hier im C#-Forum, muss ich übersehen haben...
In C/C++ hat das schon immer funktioniert!
-
if((tOption & Options.Name) == Option.Name) {...}
-
O.o schrieb:
if((tOption & Options.Name) == Options.Name) ...
loks schrieb:
if((tOption & Options.Name) == Option.Name) {...}
Ich glaube, er hat's jetzt verstanden!
-
supi,
danke an alle:Ddas kann man nicht in ein switch basteln oder?
-
Nein. Zumindest auf keine vernünftige Weise!
-
_matze schrieb:
O.o schrieb:
if((tOption & Options.Name) == Options.Name) ...
loks schrieb:
if((tOption & Options.Name) == Option.Name) {...}
Ich glaube, er hat's jetzt verstanden!
Was ist mit
if((tOption & Options.Name) > 0 )
?
-
Du könntest auch mal schauen ob System.Collections.Specialized.BitVector32 sinnvoller verwendet werden kann.