我很容易拥有以下枚举
Public Enum TCheckStatus
Checked
NotChecked
Indeterminate
End Enum
我想在枚举中找到给定名称的索引,最好的方法是什么?!!
例如:
假设我有“NotChecked”字符串,我希望输出为1
答案 0 :(得分:2)
您正在寻找Enum.GetNames。它检索指定枚举中常量名称的数组。
Dim notCheckedStatus = DirectCast([Enum].Parse(GetType(TCheckStatus), "NotChecked"), TCheckStatus)
Dim allStatusNames = [Enum].GetNames(GetType(TCheckStatus))
Dim indexOfNotChecked = Array.IndexOf(AllStatusNames, "NotChecked") '=1'
string
变量解析为枚举值Array
Array
当然要解决你的问题,你只需要这个:
Array.IndexOf([Enum].GetNames(GetType(TCheckStatus)), "NotChecked")
答案 1 :(得分:1)
我无法提供精确的vb语法,但我会用C#编写它,所以看看你是否可以使用它:
int index = (int)Enum.Parse( typeof(TCheckStatus), "NotChecked");
在这种情况下, index
为1。如果你给一个无效的字符串(不是枚举的成员),它将抛出一个异常。如果这不是您想要的,则可以改为使用Enum.TryParse
。
如果您已经拥有枚举,则可以将其强制转换为int以获取索引:
var myEnum = TCheckStatus.NotChecked;
int index = (int)myEnum;
答案 2 :(得分:1)
要使用VB.net中的Enum方法获取名称及其整数等价数组,请使用GetNames()和GetValues()方法。使用Parse()来获取索引。希望这会有所帮助。
答案 3 :(得分:1)
int Output = (int)Enum.Parse(typeof(TCheckStatus), "NotChecked");
答案 4 :(得分:1)
试试这个:
Dim val as integer = cint(DirectCast([Enum].Parse(GetType(TCheckStatus), _
"NotChecked"), TCheckStatus)