Assign Multiple Enum values to one variable.
I saw this question and immediately thought, “You can’t! An Enum is an Integer that has been restricted to the values it can accept.”
And I was basically right. But, I forgot that even with an integer you can do the following in CSharp:
int i = 1 | 2;
And in VB.NET
Dim i As Integer = 1 Or 2
To end up with a variable i equal to 3 because both do bitwise ands.
So if I had an enumerated value
enum F { thing1 = 1, thing2 = 2, thing3 = 4 }
Or, in VB.NET
Enum F thing1 = 1 thing2 = 2 thing3 = 4End Enum
You could then do the following in CSharp:
F fvar;
fvar = F.thing1 | F.thing2;
Or you could do it in VB.NET like this:
Dim fvar As F = F.thing1 Or F.thing2< /blockquote>There’s just one small problem with doing all of this. If you evaluate fvar, you see that it is equal to 3 because we did not define 3 to be a specific value in our enumeration. However, by adding the Flags attribute to our enum definition:
[Flags]enum F { thing1 = 1, thing2 = 2, thing3 = 4 }<Flags()> _Enum F thing1 = 1 thing2 = 2 thing3 = 4End Enumfvar will evaluate to:
thing1 | thing2
in CSharp and in VB.NET…
Well, in VB.NET it still evaluates to 3.
del.icio.us Tags:
.netTechnorati Tags:
.netIf you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!
Related Post

