Click here to Skip to main content
11,430,053 members (74,182 online)
Click here to Skip to main content

Tips about .NET Enums

, 19 Apr 2004
Rate this:
Please Sign up or sign in to vote.
Some very simple tips using Enum types in VB.NET and C#.NET

Introduction

The following lines of code show you how to retrieve an Enum member, given its integer value or its name. This can be very useful when you are using Enum types in VB.NET or C#.NET and you need to set an Enum type value loading, for example, a string configuration setting from a .config file.

In the following, we suppose to have these .NET namespaces referenced and this custom Enum type defined:

  ' VB.NET version
  Imports System.ComponentModel
  Imports System.Diagnostics

  Public Enum MyEnum
    alfa = 1
    beta = 2
    gamma = 3
  End Enum
  // C#.NET version
  using System.ComponentModel;
  using System.Diagnostics;

  public enum MyEnum
  {
    alfa = 1, 
    beta = 2,
    gamma = 3
  }

How to retrieve an Enum member given its integer value

To retrieve an Enum member given its integer value, simply cast the integer value to your Enum type:

  ' VB.NET version
  Dim MyEnumVal As MyEnum
  Dim i As Integer

  i = 2
  MyEnumVal = CType(i, MyEnum)
  Debug.WriteLine(MyEnumVal.ToString())

The result of the Debug.WriteLine() method will be "beta".

Notice that if you try to cast an integer value that is not defined in the Enum, the code will work without exceptions; in the following code, MyEnumVal receives the value of 4, anyway:

  ' VB.NET version
  i = 4
  MyEnumVal = CType(i, MyEnum)
  Debug.WriteLine(MyEnumVal.ToString())    ' The output is "4"

As suggested by Michael Kennedy (thank you!), with some computing overhead, you can test for defined Enum values using this code:

  ' VB.NET version
  If Not MyEnum.IsDefined(GetType(MyEnum), 4) Then
    Debug.WriteLine("The value of 4 is not defined in the Enum")
  End If

See below for the C#.NET version:

  // C#.NET version
  MyEnum MyEnumVal;
  int i;

  // Retrieve an enum member by its value
  i = 2;
  MyEnumVal = (MyEnum)i;
  Debug.WriteLine(MyEnumVal.ToString());

  // If the specified value is not an enum member,
  // MyEnumVal receives the value anyway
  i = 4;
  MyEnumVal = (MyEnum)i;
  Debug.WriteLine(MyEnumVal.ToString());    // The output is "4"

  // Test for allowed enum values
  if (!MyEnum.IsDefined(typeof(MyEnum), 4))
    Debug.WriteLine("The value of 4 is not defined in the Enum");

How to retrieve an Enum member given its name

To retrieve an Enum member given its name, use the ConvertFrom() method of the TypeConverter class and cast the result to your Enum type:

 ' VB.NET version
 MyEnumVal = CType(TypeDescriptor.GetConverter(MyEnumVal).ConvertFrom("gamma"), MyEnum)
 Debug.WriteLine(MyEnumVal.ToString())    ' The output is "gamma"

An alternative way to reach the same goal is using the Parse() method of System.Enum. This approach, suggested by Dactyl (thank you!), is simpler and 3-times faster than using the TypeConverter class:

  ' VB.NET version
  MyEnumVal = CType(System.Enum.Parse(GetType(MyEnum), "gamma"), MyEnum)

See below for the C#.NET version:

  // C#.NET version
  MyEnumVal = (MyEnum) TypeDescriptor.GetConverter(MyEnumVal).ConvertFrom("gamma");
  Debug.WriteLine(MyEnumVal.ToString());    // The output is "gamma"

  // Dactyl's alternative
  MyEnumVal = (MyEnum) Enum.Parse(typeof(MyEnum), "gamma");

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Alberto Venditti
Technical Lead
Italy Italy
I was born in 1970.

My first computer experience dates back to early 80s, with a Sinclair ZX81.
From that time on, as many "friends" say, my IT-illness has increased year by year.

I graduated in Electronic Engineering and earned the following Microsoft certifications:
MCP, MCT, MCDBA, MCSD, MCAD, MCSD for .NET (early achiever).

I worked in IT as a developer, a teacher, a consultant, a technical writer, a technical leader.
IT knowledge applied to real life is my primary interest and focus.

Comments and Discussions

 
GeneralAnother trick: - Fill the .Items collection of a drop down list with the Names and Values of an Enum Pin
Pedro Francisco Borges Pereira19-Jul-07 7:33
memberPedro Francisco Borges Pereira19-Jul-07 7:33 
General'How to retrieve an Enum member given its name' Pin
Pedro Francisco Borges Pereira12-Jul-07 4:24
memberPedro Francisco Borges Pereira12-Jul-07 4:24 
GeneralRe: 'How to retrieve an Enum member given its name' Pin
Christian Graus12-Jul-07 4:32
staffChristian Graus12-Jul-07 4:32 
GeneralRe: 'How to retrieve an Enum member given its name' Pin
Pedro Francisco Borges Pereira12-Jul-07 5:56
memberPedro Francisco Borges Pereira12-Jul-07 5:56 
GeneralRe: 'How to retrieve an Enum member given its name' Pin
Alberto Venditti12-Jul-07 4:33
memberAlberto Venditti12-Jul-07 4:33 
GeneralRe: 'How to retrieve an Enum member given its name' Pin
Pedro Francisco Borges Pereira12-Jul-07 5:48
memberPedro Francisco Borges Pereira12-Jul-07 5:48 
GeneralIsDefined - Not Reliable Pin
wakazula15-Mar-07 5:34
memberwakazula15-Mar-07 5:34 
GeneralRe: IsDefined - Not Reliable Pin
Alberto Venditti5-Mar-15 1:11
memberAlberto Venditti5-Mar-15 1:11 
QuestionHow to pass argument in image button's click handler Pin
Member #36922047-Mar-07 2:23
memberMember #36922047-Mar-07 2:23 
AnswerRe: How to pass argument in image button's click handler Pin
Alberto Venditti7-Mar-07 7:55
memberAlberto Venditti7-Mar-07 7:55 
GeneralUsing a key word as an enum element Pin
David Parvin17-May-06 12:51
memberDavid Parvin17-May-06 12:51 
GeneralThe Best Point of the Article Pin
Ricardo Casquete18-Feb-06 0:40
memberRicardo Casquete18-Feb-06 0:40 
GeneralDirectCast Pin
MadClown1-Dec-05 12:29
memberMadClown1-Dec-05 12:29 
GeneralRe: DirectCast Pin
Alberto Venditti1-Dec-05 23:34
memberAlberto Venditti1-Dec-05 23:34 
QuestionHow to declare an Enum item with a Space Pin
Anonymous3-Aug-05 10:23
sussAnonymous3-Aug-05 10:23 
AnswerRe: How to declare an Enum item with a Space Pin
Alberto Venditti3-Aug-05 23:12
memberAlberto Venditti3-Aug-05 23:12 
AnswerRe: How to declare an Enum item with a Space Pin
BradleyT15-Aug-05 13:12
memberBradleyT15-Aug-05 13:12 
AnswerRe: How to declare an Enum item with a Space Pin
Artur M.21-Nov-05 8:00
memberArtur M.21-Nov-05 8:00 
GeneralSeveral Enums in one integer Pin
Michael Jensen20-Jul-04 3:21
memberMichael Jensen20-Jul-04 3:21 
GeneralRe: Several Enums in one integer Pin
Anonymous21-Jul-04 3:38
sussAnonymous21-Jul-04 3:38 
GeneralAbout Enums From Microsoft Pin
Michael Kennedy18-May-04 11:50
memberMichael Kennedy18-May-04 11:50 
GeneralAnother trick to put in your article Pin
Arjan Einbu29-Apr-04 2:24
memberArjan Einbu29-Apr-04 2:24 
GeneralNulls become zero Pin
Anthony Berglas27-Apr-04 18:57
memberAnthony Berglas27-Apr-04 18:57 
GeneralGetting all values of an enum Pin
mav.northwind22-Apr-04 22:06
membermav.northwind22-Apr-04 22:06 
GeneralRe: Getting all values of an enum Pin
Søren Lund28-Apr-04 2:26
memberSøren Lund28-Apr-04 2:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150428.2 | Last Updated 20 Apr 2004
Article Copyright 2004 by Alberto Venditti
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid