Xpode.com        Click here to Print this article.

.NET interview questions: - What is ENUM and what are the benefits of using it?

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 .



http://
http://www.questpond.com/

Contributed by:
Shivprasad koirala Koirala
I am a Microsoft MVP for ASP/ASP.NET and currently a CEO of a small E-learning company in India. We are very much active in making training videos , writing books and corporate trainings. Do visit my site http://www.questpond.com for .NET, C# , design pattern , WCF , Silverlight , LINQ , ASP.NET , ADO.NET , Sharepoint , UML , SQL Server training and Interview questions and answers

Resourse address on xpode.com
http://www.xpode.com/Print.aspx?Articleid=710

Click here to go on website