Multiple ways to Convert Enum to/from Integer in C#(Examples)
This tutorial covers the following aspects in C#:
- Converting Integers to Enum Constants
- Parsing Enums to Integers in C#
An Enum is a custom special class type designed to hold a group of constant values, which can be either strings or numbers.
public enum DAYS : int{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7,
}
In C#, the Enum type supports constants that can be mapped to Integer, Short, Bytes, and String.
In the example provided, Enum constants are specifically mapped with integers.
On the other hand, Int is a native predefined type in C# used to store numeric values.
Automatic conversion is not feasible due to the distinct data types.
Automatic conversion is not feasible due to the distinct data types.
How to Convert Int to Enum in C#?
There are multiple ways to convert integers to Enum constants in C#:
Use type casting. Sometimes, there is a need to convert integer values to
Enum
constants. Casting thetype
for a given value is a simple method to achieve this.Enum enum = (Enum) integer ;
Here is an
example for parse Int to Enum in C#
.using System; public class Program { public static void Main() { int weekNumber= 2; var day= (DAYS)weekNumber; Console.WriteLine("Day is : {0}", day); } } public enum DAYS : int { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7, }
Output:
The day is : Tuesday
Sometimes, invalid numbers are passed, resulting in an error or unexpected outcome. To verify if a valid integer is parsed to an Enum object, the
Enum.IsDefined
method is used.This method checks whether the number is valid or not, returning true if it is and false otherwise.
Enum.IsDefined
takes the Enum type and an integer as arguments.using System; public class Program { public static void Main() { DAYS days; int weekNumber= 1; // Check if an integer is mapped to Enum or not var res=Enum.IsDefined(typeof(DAYS), weekNumber); var res1=Enum.IsDefined(typeof(DAYS), 11); Console.WriteLine("{0}", res); // True Console.WriteLine("{0}", res1); // False if(res){ var day= (DAYS)weekNumber; Console.WriteLine("Day is : {0}", day); } else { Console.WriteLine("Not able to convert integer to Enum"); } } }
In the given example, initially, check whether an integer is mapped to an
Enum
or not. If it is valid, proceed to convert it to an Enum object using casting. This approach helps in avoiding errors and potential issues.use Enum.tryParse()
Enum.tryParse()
takes a string representation of a number and converts it into an enum object.using System; public class Program { public static void Main() { DAYS days; var weekNumber= "2"; Enum.TryParse(weekNumber.ToString(), out days); Console.WriteLine("Day is : {0}", days); } }
This method takes a
string
representing a number, converts it to anumeric
value, and then transforms it into anenum
object. Utilizing this method helps in avoiding errors. If the process is successful, it returns an Enum object.
How to Parse Enum to Integer in C#?
There are multiple ways we can convert Enum to an integer in C#
Use type casting
It is easy to convert Enum to an integer using cast.
Enum
constantcast
to int type as given belowint value = (int) Enum.constant;
Here is an example
using System; public class Program { public static void Main() { int number = (int) DAYS.Friday; Console.WriteLine("Day number is : {0}", number); } } public enum DAYS : int { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7, }
Compiled to output:
The day number is 5
Use Convert.ToInt32 function
The
Convert.ToInt32()
method converts an enum object to an integer. It takes an enum object as input and returns the corresponding integer.DAYS day= DAYS.Friday; int number = Convert.ToInt32(day); Console.WriteLine("{0}", number); // 5
Cast the enum to an object, then recast it to an int type.
Initially, cast the enum to an object and subsequently convert it back to an int type.
DAYS day= DAYS.Friday; int number = (int)(object)day;