这是基本情况。
Public Class MyEnumClass(of T)
Public MyValue as T
End Class
这是对实际类的过度简化,但基本上我知道T是一个枚举(如果不是那么会有很多其他问题,并且是程序员做出的逻辑错误)
基本上我想获得MyValue的基础整数值。
使用Cint或Ctype不起作用。
答案 0 :(得分:50)
我打算使用一段很酷的反射代码,但只是一个简单的Convert.ToInt32
效果很好......原谅我的VB我是一个C#人
Public Function GetEnumInt(Of T)(enumVal As T) As Integer
Return Convert.ToInt32(enumVal)
End Function
答案 1 :(得分:7)
我试过这个并且有效:
String.Format("{0:d}", MyValue)
答案 2 :(得分:3)
我知道您可以执行以下操作来获取所有基础值(我希望我的VB语法是正确的......我一直在使用C#主要是最近的):
Dim intVal As Integer
For Each intVal In [Enum].GetValues(GetType(T))
//intValue is now the enum integer value
Next
这至少可以让你开始朝着正确的方向前进。
答案 3 :(得分:1)
这也有效:
f
答案 4 :(得分:0)
VB.NET中另一种简单的方法是将其添加到0:
Dim intVal As Integer = 0 + myEnum
所以,这应该有效:
Sub GetEnumInt(of T)(enumVal as T) as Int
return 0 + enumVal
End Sub
答案 5 :(得分:-1)
感谢'Jon Skeet'。但他的代码在我的Excel-2016中不起作用。最近,下一个代码可以正常工作:
Public Enum TypOfProtectWs
pws_NotFound = 0
pws_AllowAll = 1
pws_AllowFormat = 2
pws_AllowNone = 3
End Enum
Private Function TypOfProtectWs2I(pws As TypOfProtectWs) As Integer
TypOfProtectWs2I = Format("0", pws)
End Function
Private Sub test_TypOfProtectWs2I()
Debug.Print TypOfProtectWs2I(pws_AllowAll)
End Sub