Following is one of the
.NET ENUM interview questions asked during .net interview.
ENUM helps to define, manage and assign constants in effective way. Now the
below sample code is good but the level values are not readable.
if (level ==
0){Console.WriteLine("Below quality");}
else if (level ==
1){Console.WriteLine("Moderate quality");}
else if(level ==
2){Console.WriteLine("High quality");}
Now by declaring a simple ENUM called as Quality as shown below.
enum Quality
{
Low = 0,
Moderate = 1,
High = 2
};
Our code would look more readable as shown below. The other big benefit is if
we change the numeric values of quality we do not have to change throughout the
project. So we can go a change the Low quality to 1 and no change in code is
required.
if (level ==
Quality.Low){Console.WriteLine("Below quality");}
else if (level ==
Quality.Moderate){Console.WriteLine("Moderate quality");}
else if(level ==
Quality.High){Console.WriteLine("High quality");}
So summarizing ENUM has two big benefits: -
- Code becomes more readable.
- Easy to change constants without affecting throughout the project. Easy
maintenance.
Use of Flags in ENUM
“Flags” is an ENUM attribute. If you want to set multiple values to an ENUM
we need to use Flags.
[Flags]
enum MyColors
{
Green = 0,
Red = 1,
Blue = 2
};
In the below code we are setting “MyColors” ENUM to “Blue” and “Green” value.
MyColors color = MyColors.Blue
| MyColors.Green;
if ((color &
MyColors.Blue) == MyColors.Blue)
{
Console.WriteLine(" Blue");
}
if ((color &
MyColors.Green) == MyColors.Green)
{
Console.WriteLine(" Green");
}
Loop through ENUM values
We can use “GetValues()” method of the “ENUM” class which returns an array of
enum values.
var x =
Enum.GetValues(typeof(MyColors));
Below is a nice video from youtube which explains how to convert String to a
ENUM .