How to list Enum\'s members in code? I have the following Enum:
Public Enum TestEnum As int32
First = 0
Second = 2
Third = 4
Fourth = 6
End Enum
You can simply iterate through all values like this:
Public Enum TestEnum As int32
First = 0
Second = 2
Third = 4
Fourth = 6
End Enum
For Each tstEnum As TestEnum In System.Enum.GetValues(GetType(TestEnum))
Response.Write(
String.Format("Name: {0} Value: {1}",
tstEnum.ToString,
CInt(tstEnum).ToString
)
)
Next
Have you looked at Enum.GetValues ?
Edit: To clarify, yes you need to pass a Type not an instance of the enum to either method.
Enum.GetNames(GetType(TestEnum))
I have used George Filippakos answer since I wanted to know how to iterate through Enum
values.
I also found out that you can do it using Type.GetEnumValues which has been available since .NET Framework 4.0
.
Here's the two ways you can use to iterate through Enum
Values:
Module Module1
Sub Main()
For Each tstEnum As TestEnum In System.Enum.GetValues(GetType(TestEnum))
Console.WriteLine($"Name: {tstEnum.ToString}, Value: {CType(tstEnum, Integer)}")
Next
Console.WriteLine(Environment.NewLine)
For Each tstEnum As TestEnum In GetType(TestEnum).GetEnumValues
Console.WriteLine($"Name: {tstEnum.ToString}, Value: {CType(tstEnum, Integer)}")
Next
Console.ReadKey()
End Sub
Public Enum TestEnum
First = 1
Second = 2
Third = 3
End Enum
End Module
Output:
Name: First, Value: 1
Name: Second, Value: 2
Name: Third, Value: 3
Name: First, Value: 1
Name: Second, Value: 2
Name: Third, Value: 3
You need to pass a type, not a value, to the method.
Members = System.Enum.GetNames(GetType(TestEnum))
If you have an instance of your enum you can also use
Members = System.Enum.GetNames(Enum1.GetType())
Though I would recommend the first approach if you know the type you want.