top
upGrad KnowledgeHut SkillFest Sale!

Search

C# Tutorial

The enum keyword in C# declares a list of named integer constants. An enum can be defined in a namespace, structure or class. However, it is better to define it in a namespace so that all the classes can access it.Enum SyntaxThe syntax for an enum is given as follows:enum NameOfEnum {      // The enumerator list };In the above syntax, the keyword enum is used to create an enumeration with the name NameOfEnum. Then the enumeration list is available within curly braces in the enum body. The value of the first identifier in the enumerator list is zero by default.Enum ExampleA program that demonstrates enum in C# is given as follows:Source Code: Program that demonstrates enum in C#using System; namespace EnumDemo {   class Example   {      enum Months      {        January = 1,        February,        March,        April,        May,        June,        July,        August,        September,        October,        November,        December      };      static void Main(string[] args)      {         Console.WriteLine("The {0}th month of the year is {1}", (int)Months.August, Months.August);      }   } }The output of the above program is as follows:The 8th month of the year is AugustNow let us understand the above program.First the enumerator Months is defined using the keyword enum. It contains all the month names of the year. January is initialized to 1 so the values for February, March etc. are 2, 3 and so on. The code snippet for this is given as follows:enum Months      {        January = 1,        February,        March,        April,        May,        June,        July,        August,        September,        October,        November,        December              };In the function Main(), the name August is displayed and its corresponding integer value using Months.August and (int)Months.August respectively. The code snippet for this is given as follows: static void Main(string[] args)      {         Console.WriteLine("The {0}th month of the year is {1}", (int)Months.August, Months.August);      }Loop through the values of enumTo loop through all the values of enum, let us see the following code:using System;   public class Example   {      public enum Emp { Pacino, Spacey, Crowe, Pitt, Jolie};      public static void Main()      {        int count = 0;        foreach (Emp e in Enum.GetValues(typeof(Emp)))          {            count++;            Console.Write("Employee "+count+"...");            Console.WriteLine(e);          }    } }  Let us now see the output:Employee 1...Pacino Employee 2...Spacey Employee 3...Crowe Employee 4...Pitt Employee 5...JolieMethods of EnumThe following are some of the static helper methods:MethodMethod DescriptionFormat(Type, Obj, Str)Specified value of a specified enumerated type to its equivalent string representation.GetHashCode()The hash code for the value of this instance.GetName()Returns the name of the constant of the specified value of specified enum.GetNames()Returns an array of the values of all the constants of specified enum.GetType()The Type of the current instanceGetValues(Type)Get an array of the values of the constants in a specified enumeration.Enum with Customized ValueLet us see how to create an Enum with customized values:using System; public class Example   {      public enum Vehicle { Mobile = 100, Laptop, Tablet}        public static void Main()      {        int one = (int)Vehicle.Mobile;        int two = (int)Vehicle.Laptop;          int three = (int)Vehicle.Tablet;          Console.WriteLine("Mobile = {0}", one);          Console.WriteLine("Laptop = {0}", two);          Console.WriteLine("Tablet = {0}", three);      } }Let us now see the output:Mobile = 100 Laptop = 101 Tablet = 102Compare enum membersTo compare enum members in C#, use the CompareTo() method:using System; public class Demo {    enum Stock { Mobile = 200, Laptop = 150, Harddisk = 350 };    public static void Main() {        Stock s1 = Stock.Mobile;        Stock s2 = Stock.Laptop;        Stock s3 = Stock.Harddisk;        Console.WriteLine("{0} with more stock than {1}?", s1, s2);        Console.WriteLine( "{0}{1}", s1.CompareTo(s2) > 0 ? "Yes" : "No", Environment.NewLine );        Console.WriteLine("{0} with more stock than {1}?", s3, s2);        Console.WriteLine( "{0}{1}", s3.CompareTo(s2) > 0 ? "Yes" : "No", Environment.NewLine );    } }Let us see the output now:Mobile with more stock than Laptop? Yes Harddisk with more stock than Laptop? YesEnum keyword to define a variable typeLet us see how we can use enum keyword to define a variable type in C#:using System; namespace Demo {   class Example {      enum CarType { Sedan = 1, Hatchback = 2};      static void Main(string[] args) {         int a = (int)CarType.Sedan;         Console.WriteLine("Car choice: {0}", a);         Console.ReadKey();      }   } }Let us see the output:Car choice: 1Enum isDefined() MethodThe isDefined() method check whether an enum value is present in an enum, using integral value or the name as string.Let us see an example:using System; using System.Linq; class Example {    static void Main()    {        int[] arr1 = new int[5];        arr1[0] = 20;        arr1[1] = 35;               arr1[2] = 55;        arr1[3] = 70;        arr1[4] = 90;        var res = arr1.AsEnumerable();        foreach (var val in res)        {            Console.WriteLine(val);        }    } }The following is the output:20 35 55 70 90Enum Equals MethodUse the Equals() method to check whether two enums are equal or not:using System; class Example {    enum Tools { Sublime, Atom};    enum OnlineTools { Formatter, Compressor, Tester};    static void Main()    {        Tools t = Tools.Sublime;        OnlineTools o = OnlineTools.Tester;        Console.WriteLine("Same Enum values? = {0}", t.Equals(o) ? "Yes" : "No");    } }The above program gives the following output:Same Enum values? = NoEnum Parse() MethodUse the Parse() method to convert strings to enum values. Let us see an example:using System; public class Demo {    enum Tools { WebTester, Formatter, FileConverter };    public static void Main()    {        foreach (string str in Enum.GetNames(typeof(Tools)))        {            Console.Write("{0} = ", str);            Console.WriteLine("{0:D}", Enum.Parse(typeof(Tools), str));        }        Console.WriteLine();    } }Now, let us check the output:WebTester = 0 Formatter = 1 FileConverter = 2Enum ToString() MethodUse the ToString() method to convert enum to string. Let us see an example:using System; public class Example {    enum OnlineTools { WebTester, Formatter, FileConverter };    public static void Main()    {        Console.WriteLine("First = {0}", OnlineTools.WebTester.ToString("d"));        Console.WriteLine("Second = {0}", OnlineTools.Formatter.ToString("d"));        Console.WriteLine("Third = {0}", OnlineTools.FileConverter.ToString("d"));    } }Let us check the output:First = 0 Second = 1 Third = 2Enum TryParse() MethodUse the TryParse() method to convert the string representation of enumerated constants. The conversion is towards an equivalent enumerated object.using System; public class Demo {    enum Tools { WebTester = 1, Formatter = 2};    public static void Main()    {       string[] Tools = { "1", "2", "3", "4", "tester"};       foreach (string val in Tools)       {         Tools t;         if (Enum.TryParse(val, true, out t))                    if (Enum.IsDefined(typeof(Tools), t) | t.ToString().Contains(","))                 Console.WriteLine("Converted '{0}' to {1}", val, t.ToString());            else               Console.WriteLine("{0} = not an enum value", val);         else            Console.WriteLine("{0} = not an enum member", val);      }    } }The output:Converted '1' to WebTester Converted '2' to Formatter 3 = not an enum value 4 = not an enum value tester = not an enum memberEnum CompareTo() methodUse the CompareTo() method to compare two enums using the CompareTo() method:using System; class Example {    enum Price { Pen = 5, Pencil = 20};    static void Main()    {        Price one = Price.Pen;        Price two = Price.Pencil;        Console.WriteLine("Price for Pen is less than Pencil!");        Console.WriteLine( "{0}{1}", one.CompareTo(two) < 0 ? "Yes" : "No", Environment.NewLine );    } }The above program gives the following output:Price for Pen is less than Pencil! YesEnum Format() MethodConvert the value of a specified enumerated type to equivalent string representation: Source Code: Implement Enum Format() method in C#using System; class Example {    enum Languages { English, Russian, Chinese, French };    static void Main()    {        Languages lang1 = Languages.French;        Languages lang2 = Languages.Russian;        Console.WriteLine("Language: {0}", Enum.Format(typeof(Languages), lang1, "d"));        Console.WriteLine("Language: {0}", Enum.Format(typeof(Languages), lang2, "d"));    } }The output:Language: 3 Language: 1Enum GetName() MethodReturn the names of the constants in the Enumeration using the GetName() method:Source Code: Implement Enum GetName() method in C#using System; class Demo {    enum WebDev { HTML5, CSS, JavaScript, jQuery, AngularJS };    static void Main()    {        Console.WriteLine("Technology first for web development = {0}",Enum.GetName(typeof(WebDev), 0));        Console.WriteLine("Technology second for web development = {0}",Enum.GetName(typeof(WebDev), 1));        Console.WriteLine("Technology third for web development = {0}",Enum.GetName(typeof(WebDev), 2));        Console.WriteLine("Technology fourth for web development = {0}",Enum.GetName(typeof(WebDev), 3));    } }The output:Technology first for web development = HTML5 Technology second for web development = CSS Technology third for web development = JavaScript Technology fourth for web development = jQueryEnum GetNames() MethodUse the GetNames(() Method to display all the names of the constants in the Enumeration:Source Code: Implement Enum GetNames() method in C#using System; class Demo {    enum WebDev { HTML5, CSS, JavaScript, jQuery, AngularJS };    static void Main()    {      Console.WriteLine("Study the following technologies to become a WebDev expert:");        foreach(string str in Enum.GetNames(typeof(WebDev)))            Console.WriteLine(str);    } }Let us check the output:Study the following technologies to become a WebDev expert: HTML5 CSS JavaScript jQuery AngularJSType of the specified EnumerationTo get the type of the specified Enumeration, use the GetType() method:Source Code: Display the Type of the specified Enumeration in C#using System; public class Example {   public static void Main()   {      Enum[] values = { DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday };      Console.WriteLine("Displaying the type:");      foreach (var res in values)         Display(res);   }   static void Display(Enum e)   {      Type type = e.GetType();      Type uType = Enum.GetUnderlyingType(type);      Console.WriteLine("{0}", uType.Name);      } }The output:Displaying the type: Int32 Int32 Int32 Int32Enum GetValues() MethodUse the GetValues() method to get the values of all the constants in a specified enumeration.Source Code: Implementing Enum GetValues() Method in C#using System; public class Example {    enum Price { Pen = 10, Pencil = 50};    public static void Main() {        Console.WriteLine("Price:");        foreach(int res in Enum.GetValues(typeof(Price)))            Console.WriteLine(res);    } }The above program gives the following output:Price: 10 50
logo

C# Tutorial

Enums in C#

The enum keyword in C# declares a list of named integer constants. An enum can be defined in a namespace, structure or class. However, it is better to define it in a namespace so that all the classes can access it.

Enum Syntax

The syntax for an enum is given as follows:

enum NameOfEnum
{
     // The enumerator list
};

In the above syntax, the keyword enum is used to create an enumeration with the name NameOfEnum. Then the enumeration list is available within curly braces in the enum body. The value of the first identifier in the enumerator list is zero by default.

Enum Example

A program that demonstrates enum in C# is given as follows:

Source Code: Program that demonstrates enum in C#

using System;
namespace EnumDemo
{
  class Example
  {
     enum Months
     {
       January = 1,
       February,
       March,
       April,
       May,
       June,
       July,
       August,
       September,
       October,
       November,
       December
     };
     static void Main(string[] args)
     {
        Console.WriteLine("The {0}th month of the year is {1}", (int)Months.August, Months.August);
     }
  }
}

The output of the above program is as follows:

The 8th month of the year is August

Now let us understand the above program.

First the enumerator Months is defined using the keyword enum. It contains all the month names of the year. January is initialized to 1 so the values for February, March etc. are 2, 3 and so on. The code snippet for this is given as follows:

enum Months
     {
       January = 1,
       February,
       March,
       April,
       May,
       June,
       July,
       August,
       September,
       October,
       November,
       December        
     };

In the function Main(), the name August is displayed and its corresponding integer value using Months.August and (int)Months.August respectively. The code snippet for this is given as follows:

 static void Main(string[] args)
     {
        Console.WriteLine("The {0}th month of the year is {1}", (int)Months.August, Months.August);
     }

Loop through the values of enum

To loop through all the values of enum, let us see the following code:

using System;  
public class Example  
{  
   public enum Emp { Pacino, Spacey, Crowe, Pitt, Jolie};  
   public static void Main()  
   {
       int count = 0;
       foreach (Emp e in Enum.GetValues(typeof(Emp)))  
       {
           count++;
           Console.Write("Employee "+count+"...");
           Console.WriteLine(e);  
       }
   }
}  

Let us now see the output:

Employee 1...Pacino
Employee 2...Spacey
Employee 3...Crowe
Employee 4...Pitt
Employee 5...Jolie

Methods of Enum

The following are some of the static helper methods:

MethodMethod Description
Format(Type, Obj, Str)Specified value of a specified enumerated type to its equivalent string representation.
GetHashCode()The hash code for the value of this instance.
GetName()Returns the name of the constant of the specified value of specified enum.
GetNames()Returns an array of the values of all the constants of specified enum.
GetType()The Type of the current instance
GetValues(Type)Get an array of the values of the constants in a specified enumeration.

Enum with Customized Value

Let us see how to create an Enum with customized values:

using System;
public class Example  
{  
   public enum Vehicle { Mobile = 100, Laptop, Tablet}    
   public static void Main()  
   {
       int one = (int)Vehicle.Mobile;
       int two = (int)Vehicle.Laptop;  
       int three = (int)Vehicle.Tablet;  
       Console.WriteLine("Mobile = {0}", one);  
       Console.WriteLine("Laptop = {0}", two);  
       Console.WriteLine("Tablet = {0}", three);  
   }
}

Let us now see the output:

Mobile = 100
Laptop = 101
Tablet = 102

Compare enum members

To compare enum members in C#, use the CompareTo() method:

using System;
public class Demo {
   enum Stock { Mobile = 200, Laptop = 150, Harddisk = 350 };
   public static void Main() {
       Stock s1 = Stock.Mobile;
       Stock s2 = Stock.Laptop;
       Stock s3 = Stock.Harddisk;
       Console.WriteLine("{0} with more stock than {1}?", s1, s2);
       Console.WriteLine( "{0}{1}", s1.CompareTo(s2) > 0 ? "Yes" : "No", Environment.NewLine );
       Console.WriteLine("{0} with more stock than {1}?", s3, s2);
       Console.WriteLine( "{0}{1}", s3.CompareTo(s2) > 0 ? "Yes" : "No", Environment.NewLine );
   }
}

Let us see the output now:

Mobile with more stock than Laptop?
Yes
Harddisk with more stock than Laptop?
Yes

Enum keyword to define a variable type

Let us see how we can use enum keyword to define a variable type in C#:

using System;
namespace Demo {
  class Example {
     enum CarType { Sedan = 1, Hatchback = 2};
     static void Main(string[] args) {
        int a = (int)CarType.Sedan;
        Console.WriteLine("Car choice: {0}", a);
        Console.ReadKey();
     }
  }
}

Let us see the output:

Car choice: 1

Enum isDefined() Method

The isDefined() method check whether an enum value is present in an enum, using integral value or the name as string.

Let us see an example:

using System;
using System.Linq;
class Example
{
   static void Main()
   {
       int[] arr1 = new int[5];
       arr1[0] = 20;
       arr1[1] = 35;       
       arr1[2] = 55;
       arr1[3] = 70;
       arr1[4] = 90;
       var res = arr1.AsEnumerable();
       foreach (var val in res)
       {
           Console.WriteLine(val);
       }
   }
}

The following is the output:

20
35
55
70
90

Enum Equals Method

Use the Equals() method to check whether two enums are equal or not:

using System;
class Example
{
   enum Tools { Sublime, Atom};
   enum OnlineTools { Formatter, Compressor, Tester};
   static void Main()
   {
       Tools t = Tools.Sublime;
       OnlineTools o = OnlineTools.Tester;
       Console.WriteLine("Same Enum values? = {0}", t.Equals(o) ? "Yes" : "No");
   }
}

The above program gives the following output:

Same Enum values? = No

Enum Parse() Method

Use the Parse() method to convert strings to enum values. Let us see an example:

using System;
public class Demo
{
   enum Tools { WebTester, Formatter, FileConverter };
   public static void Main()
   {
       foreach (string str in Enum.GetNames(typeof(Tools)))
       {
           Console.Write("{0} = ", str);
           Console.WriteLine("{0:D}", Enum.Parse(typeof(Tools), str));
       }
       Console.WriteLine();
   }
}

Now, let us check the output:

WebTester = 0
Formatter = 1
FileConverter = 2

Enum ToString() Method

Use the ToString() method to convert enum to string. Let us see an example:

using System;
public class Example
{
   enum OnlineTools { WebTester, Formatter, FileConverter };
   public static void Main()
   {
       Console.WriteLine("First = {0}", OnlineTools.WebTester.ToString("d"));
       Console.WriteLine("Second = {0}", OnlineTools.Formatter.ToString("d"));
       Console.WriteLine("Third = {0}", OnlineTools.FileConverter.ToString("d"));
   }
}

Let us check the output:

First = 0
Second = 1
Third = 2

Enum TryParse() Method

Use the TryParse() method to convert the string representation of enumerated constants. The conversion is towards an equivalent enumerated object.

using System;
public class Demo
{
   enum Tools { WebTester = 1, Formatter = 2};
   public static void Main()
   {
      string[] Tools = { "1", "2", "3", "4", "tester"};
      foreach (string val in Tools)
      {
        Tools t;
        if (Enum.TryParse(val, true, out t))        
           if (Enum.IsDefined(typeof(Tools), t) | t.ToString().Contains(","))  
              Console.WriteLine("Converted '{0}' to {1}", val, t.ToString());
           else
              Console.WriteLine("{0} = not an enum value", val);
        else
           Console.WriteLine("{0} = not an enum member", val);
     }
   }
}

The output:

Converted '1' to WebTester
Converted '2' to Formatter
3 = not an enum value
4 = not an enum value
tester = not an enum member

Enum CompareTo() method

Use the CompareTo() method to compare two enums using the CompareTo() method:

using System;
class Example
{
   enum Price { Pen = 5, Pencil = 20};
   static void Main()
   {
       Price one = Price.Pen;
       Price two = Price.Pencil;
       Console.WriteLine("Price for Pen is less than Pencil!");
       Console.WriteLine( "{0}{1}", one.CompareTo(two) < 0 ? "Yes" : "No", Environment.NewLine );
   }
}

The above program gives the following output:

Price for Pen is less than Pencil!
Yes

Enum Format() Method

Convert the value of a specified enumerated type to equivalent string representation:

 Source Code: Implement Enum Format() method in C#

using System;
class Example
{
   enum Languages { English, Russian, Chinese, French };
   static void Main()
   {
       Languages lang1 = Languages.French;
       Languages lang2 = Languages.Russian;
       Console.WriteLine("Language: {0}", Enum.Format(typeof(Languages), lang1, "d"));
       Console.WriteLine("Language: {0}", Enum.Format(typeof(Languages), lang2, "d"));
   }
}

The output:

Language: 3
Language: 1

Enum GetName() Method

Return the names of the constants in the Enumeration using the GetName() method:

Source Code: Implement Enum GetName() method in C#

using System;
class Demo
{
   enum WebDev { HTML5, CSS, JavaScript, jQuery, AngularJS };
   static void Main()
   {
       Console.WriteLine("Technology first for web development = {0}",Enum.GetName(typeof(WebDev), 0));
       Console.WriteLine("Technology second for web development = {0}",Enum.GetName(typeof(WebDev), 1));
       Console.WriteLine("Technology third for web development = {0}",Enum.GetName(typeof(WebDev), 2));
       Console.WriteLine("Technology fourth for web development = {0}",Enum.GetName(typeof(WebDev), 3));
   }
}

The output:

Technology first for web development = HTML5
Technology second for web development = CSS
Technology third for web development = JavaScript
Technology fourth for web development = jQuery

Enum GetNames() Method

Use the GetNames(() Method to display all the names of the constants in the Enumeration:

Source Code: Implement Enum GetNames() method in C#

using System;
class Demo
{
   enum WebDev { HTML5, CSS, JavaScript, jQuery, AngularJS };
   static void Main()
   {
     Console.WriteLine("Study the following technologies to become a WebDev expert:");
       foreach(string str in Enum.GetNames(typeof(WebDev)))
           Console.WriteLine(str);
   }
}

Let us check the output:

Study the following technologies to become a WebDev expert:
HTML5
CSS
JavaScript
jQuery
AngularJS

Type of the specified Enumeration

To get the type of the specified Enumeration, use the GetType() method:

Source Code: Display the Type of the specified Enumeration in C#

using System;
public class Example
{
  public static void Main()
  {
     Enum[] values = { DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday };
     Console.WriteLine("Displaying the type:");
     foreach (var res in values)
        Display(res);
  }
  static void Display(Enum e)
  {
     Type type = e.GetType();
     Type uType = Enum.GetUnderlyingType(type);
     Console.WriteLine("{0}", uType.Name);   
  }
}

The output:

Displaying the type:
Int32
Int32
Int32
Int32

Enum GetValues() Method

Use the GetValues() method to get the values of all the constants in a specified enumeration.

Source Code: Implementing Enum GetValues() Method in C#

using System;
public class Example
{
   enum Price { Pen = 10, Pencil = 50};
   public static void Main() {
       Console.WriteLine("Price:");
       foreach(int res in Enum.GetValues(typeof(Price)))
           Console.WriteLine(res);
   }
}

The above program gives the following output:

Price:
10
50

Leave a Reply

Your email address will not be published. Required fields are marked *

Comments

austin faith

Avery good write-up. Please let me know what are the types of C# libraries used for AI development.

kariya arti

very satisfied!!

jean-Francois Michaud

Good tutorial. Small question: Say, there is : enum numbers { one, two, three} and a string field_enum ="one" how would I from the variable field_enum have a response with value numbers.one so that it can be treated as an enum and not as a string. making a list from the enum, and loop into the list. is not elegant... and may not work is forced value on field is forced ( one = 100).

Kshitiz

Hi Team Knowledge Hut, Thank you for such an informative post like this. I am completely new to this digital marketing field and do not have much idea about this, but your post has become a supportive pillar for me. After reading the blog I would expect to read more about the topic. I wish to get connected with you always to have updates on these sorts of ideas. Regards, Kshitiz

Ed

The reason abstraction can be used with this example is because, the triangle, circle. Square etc can be defined as a shape, for example.....shape c = new circle(5,0)...the abstract object c now points at the circle class. Thus hiding implementation

Suggested Tutorials

Swift Tutorial

Introduction to Swift Tutorial
Swift Tutorial

Introduction to Swift Tutorial

Read More

R Programming Tutorial

R Programming

Python Tutorial

Python Tutorial