Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding multiple values to Enum Type variable

Tags:

c#

enums

http://msdn.microsoft.com/en-us/library/cc138362.aspx

I refer a code from above link which is showing adding values to Enum Type. but its not working at my end. The code is expected output : I am getting actual output:

Please refer code : **
// Expected Output: Meeting days are Tuesday, Thursday, Friday

// Actual Output: Meeting days are Friday

// Expected Output: Meeting days are Thursday, Friday

// Actaul Output: Meeting days are Monday**

     class Program
{
    enum Days2
    {
        None = 1,
        Sunday = 2,
        Monday = 3,
        Tuesday = 4,
        Wednesday = 5,
        Thursday = 6,
        Friday = 7,
        Saturday = 8
    }



    static void Main(string[] args)
    {
        Days2 meetingDays = Days2.Tuesday | Days2.Thursday;

        // Initialize with two flags using bitwise OR.
        meetingDays = Days2.Tuesday | Days2.Thursday;

        // Set an additional flag using bitwise OR.
        meetingDays = meetingDays | Days2.Friday;


        Console.WriteLine("Meeting days are {0}", meetingDays);
        // Expected Output: Meeting days are Tuesday, Thursday, Friday
        **// Actual Output: Meeting days are  Friday**

        // Remove a flag using bitwise XOR.
        meetingDays = meetingDays ^ Days2.Tuesday;
        Console.WriteLine("Meeting days are {0}", meetingDays);

        // Expected Output: Meeting days are Thursday, Friday
        **// Actaul Output: Meeting days are Monday**

        Console.ReadLine();

    }
}
like image 862
pvc Avatar asked Dec 02 '22 02:12

pvc


2 Answers

In order to be able to use bitwise operations to combine enum values, they need to have values that correspond to powers of two.

Additionally, you should mark the enum with the Flags attribute, and by convention use zero as "no flags set". Example:

[Flags]
public enum Days2 
{
    None = 0,
    Sunday = 1
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64
}

See the C# Programming Guide for more info.

like image 76
Anders Fjeldstad Avatar answered Dec 04 '22 17:12

Anders Fjeldstad


Add [Flags] attribute to your enum.

like image 24
Anonymous Avatar answered Dec 04 '22 18:12

Anonymous