11

How do I do a simple compare of an enum value and a string that should match the enums name?

How do I parse the string into it's appropriate enum value.

For example,

Enum A
     B=0
     C=1
     D=2
End Enum

How do I check if String = A.C and how do I convert string into its corresponding A value without comparing it to a string representation?

1
  • 2
    by the way, if you always want to the enum start with value 0 (zero) you do not need to say it, just B C D is enough Commented Jan 25, 2009 at 0:13

4 Answers 4

17

There are several different methods that are related:

Enum.GetName(typeof(A), A.C) == "C"
A.C.ToString() == "C"
((A)Enum.Parse(typeof(A), "C")) == A.C

The first two convert the value of A.C to a string representation ("C") and then compare it to a string. The last one converts the string "C" to a type A, and then compares as an actual type A.

Enum to string: enumValue.ToString() or Enum.GetName(typeof(A), A.C)

String to enum: (A)Enum.Parse(typeof(A), "C")

Note that none of those will really work if the enumeration is marked with FlagsAttribute.

Sign up to request clarification or add additional context in comments.

Comments

7

The Enum.Parse method:

Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive.

Here's the VB.NET example code from MSDN:

Module Example
   Public Sub Main()
      Dim colorStrings() As String = {"0", "2", "8", "blue", "Blue", "Yellow", "Red, Green"}
      For Each colorString As String In colorStrings
         Try
            Dim colorValue As Colors = CType([Enum].Parse(GetType(Colors), colorString, True), Colors)        
            If [Enum].IsDefined(GetType(Colors), colorValue) Or colorValue.ToString().Contains(",") Then 
               Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString())
            Else
               Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString)            
            End If                    
         Catch e As ArgumentException
            Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString)
         End Try
      Next
   End Sub
End Module

Comments

5

Enum.GetName(typeof(A),enumValue)==stringValue

Comments

2

You can also use the name() function to check this

A.C.name() == "C"

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.