How to list Enum's members

后端 未结 4 1847
不思量自难忘°
不思量自难忘° 2021-02-04 02:36

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
         


        
相关标签:
4条回答
  • 2021-02-04 02:44

    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
    
    0 讨论(0)
  • 2021-02-04 02:44

    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))
    
    0 讨论(0)
  • 2021-02-04 02:46

    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
    
    0 讨论(0)
  • 2021-02-04 02:53

    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.

    0 讨论(0)
提交回复
热议问题