:The problem:


enum Choice

I would like to pass it to function like that:

void function(Choice.A | Choice.B)
     //how do I determine what was passed here??
     //how to handle two or more values??

Thanks in adv

Look up how to use a switch statement.

First of all your enum must have values which equal to x^2 (1, 2, 4, 8, 16, 32, etc.).

enum Choice
    A = 1,
    B = 2,
    C = 4

Having the such enumeration your method can look as the following does:

void function(Choice choice)
    if ((choice & Choice.A) != 0)
          // It's A.

    if ((choice & Choice.B) != 0)
          // It's B.

Edited 3 Years Ago by mike_2000_17: Fixed formatting

most easy way to do such thing use binary idea as Askold told you in his post: where
1: 0001
2: 0010
3: 0011
and so on...
then do your comparison to know each value of enumerator you want but be careful in such number like 4: 0011 when you and with it can retrieve bot A, and B in such case use number in such way so you can distinct between
A: 0000 0001 = 1
B: 0000 0010 = 2
C: 0000 0100 = 4


I have already found another page where it is explained, but THANKS!

Why not use a switch statement? Make a variable that can contain the value of your Enum, pass that as a parameter of the method, and then use a switch statement to evaluate the value of that variable in the method... Why would that not work?

This article has been dead for over six months. Start a new discussion instead.