Vb.net 如何列出Enum';s成员
如何在代码中列出枚举的成员?我有以下枚举:Vb.net 如何列出Enum';s成员,vb.net,enums,Vb.net,Enums,如何在代码中列出枚举的成员?我有以下枚举: Public Enum TestEnum As int32 First = 0 Second = 2 Third = 4 Fourth = 6 End Enum 我试图通过以下代码列出TestEnum的所有成员,但失败了: Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) H
Public Enum TestEnum As int32
First = 0
Second = 2
Third = 4
Fourth = 6
End Enum
我试图通过以下代码列出TestEnum的所有成员,但失败了:
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim Enum1 As TestEnum
Dim Members() As String
Members = System.Enum.GetNames(CType(Enum1, System.Enum))
End Sub
End Class
所以,我的问题是:如何列出枚举的成员
更新:解决方案是:
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim Members() As String
Members = System.Enum.GetNames(GetType(TestEnum))
MessageBox.Show(Join(Members, Chr(13) & Chr(10)))
End Sub
End Class
你看过吗
编辑:要澄清,是的,您需要将类型而不是枚举实例传递给这两个方法
Enum.GetNames(GetType(TestEnum))
您需要向方法传递类型,而不是值
Members = System.Enum.GetNames(GetType(TestEnum))
如果有枚举的实例,也可以使用
Members = System.Enum.GetNames(Enum1.GetType())
不过,如果您知道所需的类型,我建议您使用第一种方法。您可以简单地遍历所有值,如下所示:
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
自从我想知道如何迭代Enum
值以来,我就一直使用它
我还发现,您可以使用自.NETFramework4.0
以来一直可用的
以下是迭代Enum
值的两种方法:
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
输出:
Name: First, Value: 1
Name: Second, Value: 2
Name: Third, Value: 3
Name: First, Value: 1
Name: Second, Value: 2
Name: Third, Value: 3
我只是测试了一下,它也失败了。VisualStudio2010说:“值类型无法转换为system.type”请参见我的答案。您需要向GetName和GetValues传递类型,而不是值。它必须是
System.Enum.GetNames
或[Enum].GetNames
。